name: Build Binaries on: push: branches: - main tags: - '**' pull_request: jobs: build: runs-on: ubuntu-latest container: golang:1 strategy: matrix: GOOS: ["linux", "darwin", "windows"] GOARCH: ["amd64", "arm64"] steps: - uses: Chia-Network/actions/git-mark-workspace-safe@main - name: Checkout code uses: actions/checkout@v4 - name: Build Binary env: GOOS: ${{ matrix.GOOS }} GOARCH: ${{ matrix.GOARCH }} run: make build - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: go-chia-crawler-${{ matrix.GOOS }}-${{ matrix.GOARCH }} path: ${{ github.workspace }}/bin/go-chia-crawler* installers: runs-on: ubuntu-latest needs: - build strategy: matrix: GOOS: ["linux"] GOARCH: ["amd64", "arm64"] steps: - uses: Chia-Network/actions/git-mark-workspace-safe@main - name: Checkout code uses: actions/checkout@v4 - name: Install fpm run: sudo gem install fpm - uses: actions/download-artifact@v4 with: name: go-chia-crawler-${{ matrix.GOOS }}-${{ matrix.GOARCH }} path: artifacts - name: Get tag name if: startsWith(github.ref, 'refs/tags/') id: tag-name run: | echo "TAG_NAME=$(echo ${{ github.ref }} | cut -d'/' -f 3)" >>$GITHUB_OUTPUT - name: Generate .deb run: | chmod +x artifacts/go-chia-crawler fpm \ --input-type dir \ --output-type deb \ --name go-chia-crawler \ --architecture ${{ matrix.GOARCH }} \ --version "${{ steps.tag-name.outputs.TAG_NAME || github.sha }}" \ --url "https://github.com/Chia-Network/go-chia-crawler" \ --maintainer "Chia Network Inc <hello@chia.net>" \ --description "Go Chia Crawler" \ artifacts/go-chia-crawler=/usr/local/bin/go-chia-crawler mkdir -p installer-out mv *.deb installer-out/ - name: Upload artifacts uses: actions/upload-artifact@v4 with: name: installer-go-chia-crawler-${{ matrix.GOOS }}-${{ matrix.GOARCH }} path: ${{ github.workspace }}/installer-out/*.deb release: runs-on: ubuntu-latest needs: - installers if: startsWith(github.ref, 'refs/tags/') steps: - uses: Chia-Network/actions/git-mark-workspace-safe@main - name: Checkout code uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: path: artifacts - name: Show artifacts run: tree artifacts - name: Generate artifact zips run: | cd ${{ github.workspace }}/artifacts || exit 1 DIRS=$(find . -type d -name 'go-chia-crawler*') while IFS= read -r dir; do echo "Creating zip for $dir..." zip -r $dir.zip $dir done <<< "$DIRS" - name: Get tag name if: startsWith(github.ref, 'refs/tags/') id: tag-name run: | TAG_NAME=$(echo ${{ github.ref }} | cut -d'/' -f 3) echo "TAG_NAME=$TAG_NAME" >>$GITHUB_ENV echo "TAG_NAME=$TAG_NAME" >>$GITHUB_OUTPUT - name: Upload Release Artifacts env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | FILES=$(find ${{ github.workspace }}/artifacts -type f -name 'go-chia-crawler*.zip') while IFS= read -r file; do gh release upload \ $TAG_NAME \ $file done <<< "$FILES" gh release upload \ $TAG_NAME \ artifacts/installer-go-chia-crawler*/*.deb