diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a1c9b8f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,139 @@ +name: Build Binaries + +on: + push: + branches: + - main + pull_request: + release: + types: [published] + +permissions: + id-token: write + contents: write + +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: chia-tools-${{ matrix.GOOS }}-${{ matrix.GOARCH }} + path: ${{ github.workspace }}/bin/chia-tools* + + installers: + runs-on: ubuntu-latest + needs: + - build + strategy: + matrix: + GOOS: ["linux"] + GOARCH: ["amd64", "arm64"] + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set Env + uses: Chia-Network/actions/setjobenv@main + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Install fpm + run: sudo gem install fpm + + - uses: actions/download-artifact@v4 + with: + name: chia-tools-${{ matrix.GOOS }}-${{ matrix.GOARCH }} + path: artifacts + + - name: Generate .deb + run: | + chmod +x artifacts/chia-tools + fpm \ + --input-type dir \ + --output-type deb \ + --name chia-tools \ + --architecture ${{ matrix.GOARCH }} \ + --version "${{ env.RELEASE_TAG || github.sha }}" \ + --url "https://github.com/Chia-Network/chia-tools" \ + --maintainer "Chia Network Inc " \ + --description "Collection of CLI tools for working with Chia Blockchain" \ + artifacts/chia-tools=/usr/local/bin/chia-tools + mkdir -p installer-out + mv *.deb installer-out/ + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: installer-chia-tools-${{ matrix.GOOS }}-${{ matrix.GOARCH }} + path: ${{ github.workspace }}/installer-out/*.deb + + release: + runs-on: ubuntu-latest + needs: + - installers + steps: + - uses: actions/checkout@v4 + + - name: Set Env + uses: Chia-Network/actions/setjobenv@main + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Show artifacts + run: tree artifacts + + - name: Generate artifact zips + if: env.RELEASE == 'true' + run: | + cd ${{ github.workspace }}/artifacts || exit 1 + DIRS=$(find . -type d -name 'chia-tools*') + while IFS= read -r dir; do + echo "Creating zip for $dir..." + zip -r $dir.zip $dir + done <<< "$DIRS" + + - name: Upload Release Artifacts + if: env.RELEASE == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + FILES=$(find ${{ github.workspace }}/artifacts -type f -name 'chia-tools*.zip') + while IFS= read -r file; do + gh release upload \ + $RELEASE_TAG \ + $file + done <<< "$FILES" + + gh release upload \ + $RELEASE_TAG \ + artifacts/installer-chia-tools*/*.deb + + - uses: Chia-Network/actions/github/glue@main + if: env.FULL_RELEASE == 'true' + with: + json_data: '{"release_version":"${{ env.RELEASE_TAG }}"}' + glue_url: ${{ secrets.GLUE_API_URL }} + glue_project: "chia-tools" + glue_path: "trigger"