ci #379
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |