diff --git a/.forgejo/workflows/.gitkeep b/.forgejo/workflows/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml new file mode 100644 index 0000000..c8c2d83 --- /dev/null +++ b/.forgejo/workflows/build.yml @@ -0,0 +1,83 @@ +name: Build + +on: + push: + branches: [main] + paths-ignore: + - 'docs/**' + - 'README.md' + - 'LICENSE' + - '*.md' + pull_request: + paths-ignore: + - 'docs/**' + - '*.md' + +concurrency: + group: build-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + runs-on: go + steps: + - name: Checkout + run: | + git clone --no-checkout "https://forgejo-runner:${GITHUB_TOKEN}@git.okcu.io/${GITHUB_REPOSITORY}.git" /tmp/src + git -C /tmp/src checkout "$GITHUB_SHA" + cp -a /tmp/src/. . + - name: Cache Go modules + uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: ${{ runner.os }}-go- + - name: Vet + run: go vet ./... + - name: Test with race + run: go test -race -coverprofile=coverage.txt -covermode=atomic ./... + - name: Linux smoke build + run: | + mkdir -p bin + go build -trimpath -ldflags="-s -w" -o bin/drover ./cmd/drover + + build-windows: + runs-on: go + needs: test + steps: + - name: Checkout + run: | + git clone --no-checkout "https://forgejo-runner:${GITHUB_TOKEN}@git.okcu.io/${GITHUB_REPOSITORY}.git" /tmp/src + git -C /tmp/src checkout "$GITHUB_SHA" + cp -a /tmp/src/. . + - name: Cache Go modules + uses: actions/cache@v4 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: ${{ runner.os }}-go- + - name: Cross-compile drover.exe (windows/amd64) + env: + GOOS: windows + GOARCH: amd64 + CGO_ENABLED: '0' + run: | + SHORT_SHA="${GITHUB_SHA:0:7}" + BUILD_DATE="$(date -u +%Y-%m-%d)" + mkdir -p bin + go build -trimpath -ldflags="-s -w \ + -X main.Version=dev-${SHORT_SHA} \ + -X main.Commit=${SHORT_SHA} \ + -X main.BuildDate=${BUILD_DATE}" \ + -o bin/drover.exe ./cmd/drover + ls -la bin/ + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: drover-windows-amd64-${{ github.sha }} + path: bin/drover.exe + retention-days: 14