Skip to content

ci

ci #379

Workflow file for this run

name: Release
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- "main"
- "develop"
jobs:
vars:
name: "🧠 Generate Variables"
runs-on: ubuntu-latest
outputs:
BRANCH_NAME: ${{ steps.step1.outputs.BRANCH_NAME }}
NPM_TAG: ${{ steps.step1.outputs.NPM_TAG }}
NEXT_MACH_VERSION: ${{ steps.step1.outputs.NEXT_MACH_VERSION }}
steps:
- uses: actions/checkout@v4
- id: step1
run: bash .github/workflows/release/generate-variables.bash
test-integration:
name: "πŸ§ͺ Integration Tests"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { profile: debug }
- name: "Integration tests"
run: just integration-tests
linux-amd64:
name: "πŸ₯ Linux AMD64"
runs-on: ubuntu-latest
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: mach-${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
linux-arm64:
name: "πŸ₯ Linux ARM64"
runs-on: ubuntu-latest
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: mach-${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
macos-amd64:
name: "🍎 MacOS AMD64"
runs-on: macos-13
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: mach-${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
macos-arm64:
name: "🍎 MacOS ARM64"
runs-on: macos-14
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: mach-${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
windows-amd64:
name: "🟦 Windows AMD64"
runs-on: windows-latest
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: mach-${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
windows-arm64:
name: "🟦 Windows ARM64"
runs-on: windows-latest
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-mach
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: mach-${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
npm-package:
name: "πŸ“¦ NPM"
runs-on: ubuntu-latest
needs: [vars]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-just
- uses: ./.github/actions/setup-nodejs
- uses: ./.github/actions/setup-rust
- uses: ./.github/actions/build-npm
with: { mach_version: "${{ needs.vars.outputs.NEXT_MACH_VERSION }}" }
- uses: actions/upload-artifact@v4
with:
name: ${{ github.job }}
path: ${{ github.workspace }}/artifacts/**/*
if-no-files-found: error
retention-days: 1
publish-github-release:
name: "πŸ” Github Release"
runs-on: ubuntu-latest
needs: [test-integration, vars, npm-package, linux-amd64, linux-arm64, macos-amd64, macos-arm64, windows-amd64, windows-arm64]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: ${{ github.workspace }}/artifacts
- name: Publish` Github Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MACH_VERSION: ${{ needs.vars.outputs.NEXT_MACH_VERSION }}
BRANCH_NAME: ${{ needs.vars.outputs.BRANCH_NAME }}
run: bash .github/workflows/release/publish-github-release.bash
publish-npm-package:
name: "πŸ” Publish: NPM"
runs-on: ubuntu-latest
needs: [test-integration, vars, npm-package, linux-amd64, linux-arm64, macos-amd64, macos-arm64, windows-amd64, windows-arm64]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: ${{ github.workspace }}/artifacts
- name: Publish NPM Package
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
BRANCH_NAME: ${{ needs.vars.outputs.BRANCH_NAME }}
run: bash .github/workflows/release/publish-npm-package.bash
publish-crate:
name: "πŸ” Publish: Crates.io"
runs-on: ubuntu-latest
needs: [test-integration, vars, npm-package, linux-amd64, linux-arm64, macos-amd64, macos-arm64, windows-amd64, windows-arm64]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
path: ${{ github.workspace }}/artifacts
- name: Publish Crate
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MACH_VERSION: ${{ needs.vars.outputs.NEXT_MACH_VERSION }}
CRATES_IO_API_TOKEN: ${{ secrets.CRATES_IO_API_TOKEN }}
run: bash .github/workflows/release/publish-crate.bash