name: canary on: push: branches: [ "master" ] jobs: build: name: ${{ matrix.artifact }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest cc: gcc artifact: libtinyff-linux-x86_64.a - os: macos-latest cc: clang artifact: libtinyff-macos-aarch64.a - os: windows-latest cc: gcc artifact: libtinyff-windows-x86_64.a steps: - uses: actions/checkout@v4 - name: Build run: make CC=${{ matrix.cc }} USE_HOSTED=1 - name: Copy artifact run: cp dist/libtinyff.a ${{ matrix.artifact }} - name: Upload artifact uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact }} path: ${{ matrix.artifact }} release: name: Publish canary needs: build runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/download-artifact@v4 - name: Delete existing canary run: gh release delete canary --yes --cleanup-tag || true env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_REPO: ${{ github.repository }} - name: Create canary release uses: softprops/action-gh-release@v2 with: tag_name: canary name: "canary (${{ github.sha }})" prerelease: true make_latest: false body: | Automated canary build from `${{ github.sha }}`. Built on ${{ github.event.head_commit.timestamp }}. > ⚠️ This is a rolling prerelease. Not recommended for production use. files: "**/*.a"