# CI/CD Pipeline for dbbackup name: CI/CD on: push: branches: [main, master, develop] tags: ['v*'] pull_request: branches: [main, master] jobs: test: name: Test runs-on: ubuntu-latest container: image: golang:1.24-bookworm steps: - name: Checkout code env: TOKEN: ${{ github.token }} run: | apt-get update && apt-get install -y -qq git ca-certificates git config --global --add safe.directory "$GITHUB_WORKSPACE" git init git remote add origin "https://${TOKEN}@git.uuxo.net/${GITHUB_REPOSITORY}.git" git fetch --depth=1 origin "${GITHUB_SHA}" git checkout FETCH_HEAD - name: Download dependencies run: go mod download - name: Run tests run: go test -race -coverprofile=coverage.out ./... - name: Coverage summary run: go tool cover -func=coverage.out | tail -1 lint: name: Lint runs-on: ubuntu-latest container: image: golang:1.24-bookworm steps: - name: Checkout code env: TOKEN: ${{ github.token }} run: | apt-get update && apt-get install -y -qq git ca-certificates git config --global --add safe.directory "$GITHUB_WORKSPACE" git init git remote add origin "https://${TOKEN}@git.uuxo.net/${GITHUB_REPOSITORY}.git" git fetch --depth=1 origin "${GITHUB_SHA}" git checkout FETCH_HEAD - name: Install and run golangci-lint run: | go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2 golangci-lint run --timeout=5m ./... build: name: Build runs-on: ubuntu-latest needs: [test, lint] container: image: golang:1.24-bookworm strategy: matrix: include: - goos: linux goarch: amd64 - goos: linux goarch: arm64 - goos: darwin goarch: amd64 - goos: darwin goarch: arm64 steps: - name: Checkout code env: TOKEN: ${{ github.token }} run: | apt-get update && apt-get install -y -qq git ca-certificates git config --global --add safe.directory "$GITHUB_WORKSPACE" git init git remote add origin "https://${TOKEN}@git.uuxo.net/${GITHUB_REPOSITORY}.git" git fetch --depth=1 origin "${GITHUB_SHA}" git checkout FETCH_HEAD - name: Build env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} CGO_ENABLED: "0" run: | go build -ldflags="-s -w" -o dbbackup-${GOOS}-${GOARCH} . ls -lh dbbackup-*