name: CD - BanForge Release on: push: tags: - 'v*' workflow_dispatch: permissions: contents: write jobs: release: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Create Release env: TOKEN: ${{ secrets.TOKEN }} run: | TAG="${{ gitea.ref_name }}" REPO="${{ gitea.repository }}" SERVER="${{ gitea.server_url }}" curl -X POST \ -H "Authorization: token $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tag_name": "'$TAG'", "name": "Release '$TAG'", "body": "# BanForge '$TAG'\n\nIntrusion Prevention System", "draft": false, "prerelease": false }' \ "$SERVER/api/v1/repos/$REPO/releases" build: needs: release strategy: matrix: include: - goos: linux arch: amd64 - goos: linux arch: arm64 runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version: '1.25' cache: false - run: go mod tidy - run: go test ./... - name: Build ${{ matrix.goos }}-${{ matrix.arch }} env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.arch }} run: go build -o banforge-${{ matrix.goos }}-${{ matrix.arch }} ./cmd/banforge - name: Upload ${{ matrix.goos }}-${{ matrix.arch }} uses: actions@upload-artifact@v3 with: name: banforge-${{ matrix.goos }}-${{ matrix.arch }} path: banforge-${{ matrix.goos }}-${{ matrix.arch }}