name: Dev Release on: push: branches: [dev] workflow_dispatch: permissions: contents: write jobs: build: runs-on: ubuntu-latest strategy: matrix: include: - goos: linux goarch: amd64 - goos: linux goarch: arm64 - goos: darwin goarch: amd64 - goos: darwin goarch: arm64 - goos: windows goarch: amd64 - goos: windows goarch: arm64 steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.24' check-latest: true - name: Build CLI env: GOOS: ${{ matrix.goos }} GOARCH: ${{ matrix.goarch }} CGO_ENABLED: '0' run: | EXT="" if [ "$GOOS" = "windows" ]; then EXT=".exe"; fi VERSION="dev-$(git rev-parse --short HEAD)" go build -trimpath -ldflags="-s -w -X github.com/host-uk/core/pkg/cli.AppVersion=${VERSION}" -o core-${GOOS}-${GOARCH}${EXT} . - name: Upload artifact uses: actions/upload-artifact@v4 with: name: core-${{ matrix.goos }}-${{ matrix.goarch }} path: core-* release: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts merge-multiple: true - name: List artifacts run: ls -la artifacts/ - name: Delete existing dev release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh release delete dev -y || true - name: Delete existing dev tag run: git push origin :refs/tags/dev || true - name: Create dev release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} COMMIT_SHA: ${{ github.sha }} run: | gh release create dev \ --title "Development Build" \ --notes "Latest development build from the dev branch. **Commit:** ${COMMIT_SHA} **Built:** $(date -u +'%Y-%m-%d %H:%M:%S UTC') This is a pre-release for testing. Use tagged releases for production." \ --prerelease \ --target dev \ artifacts/*