Skip to content

Reapply "fix: rename setup script" #17

Reapply "fix: rename setup script"

Reapply "fix: rename setup script" #17

name: "CI / Library JS Staging"
on:
workflow_call:
secrets:
GITHUB_TOKEN:

Check failure on line 6 in .github/workflows/library-js-staging.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/library-js-staging.yml

Invalid workflow file

secret name `GITHUB_TOKEN` within `workflow_call` can not be used since it would collide with system reserved name
required: true
GIT_AUTHOR_EMAIL:
required: true
GIT_AUTHOR_NAME:
required: true
GIT_COMMITTER_EMAIL:
required: true
GIT_COMMITTER_NAME:
required: true
jobs:
# Lint the code
staging-lint:
name: "Staging / Lint"
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- uses: MatrixAI/.github/.github/actions/matrixai-env-setup@master
- name: Run linting
run: |
nix develop .#ci --command bash -c $'
npm run lint
'
# Create the merge PR
staging-merge-begin:
name: "Staging / Merge Begin"
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Create Pull Request from Staging to Master
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr create \
--head staging \
--base master \
--title "ci: merge staging to master" \
--body "This is an automatic PR generated by the CI/CD pipeline. This will be automatically fast-forward merged if successful." \
--assignee "@me" \
--no-maintainer-edit || true
printf "Pipeline Attempt on $GITHUB_RUN_ID for $GITHUB_SHA\n\n$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \
| gh pr comment staging \
--body-file - \
--repo "$GITHUB_REPOSITORY"
# Build the distribution - JS is platform-agnostic
staging-build:
name: "Staging / Build"
runs-on: ubuntu-latest
permissions:
contents: read
actions: write
steps:
- uses: actions/checkout@v4
- uses: MatrixAI/.github/.github/actions/matrixai-env-setup@master
- name: Run build
run: |
nix develop .#ci --command bash -c $'
npm run build --verbose
'
- name: Upload Build
uses: actions/upload-artifact@v4
with:
name: dist
path: ./dist
# Build on every platform
# This re-uses the built `./dist`, and run tests and benches
staging-platforms:
name: "Staging / Platforms"
needs:
- staging-build
runs-on: ${{ matrix.os }}
permissions:
contents: read
actions: write
checks: write
strategy:
fail-fast: true
matrix:
include:
- platform: linux
os: ubuntu-latest
env: {}
script: |
nix develop .#ci --command bash -c $'
npm test -- --ci --coverage
npm run bench --if-present
'
- platform: windows
os: windows-latest
env: {}
script: |
mkdir -Force "$CI_PROJECT_DIR/tmp"
Import-Module $env:ChocolateyInstall\helpers\chocolateyProfile.psm1
./scripts/choco-install.ps1
refreshenv
npm install --ignore-scripts
$env:Path = "$(npm root)\.bin;" + $env:Path
npm test -- --ci --coverage
npm run bench --if-present
- platform: macos
os: macos-latest
env: {}
script: |
mkdir -p "$CI_PROJECT_DIR/tmp"
eval "$(brew shellenv)"
./scripts/brew-install.sh
hash -r
npm install --ignore-scripts
export PATH="$(npm root)/.bin:$PATH"
npm test -- --ci --coverage
npm run bench --if-present
steps:
- uses: actions/checkout@v4
- if: matrix.platform == 'linux'
uses: MatrixAI/.github/.github/actions/matrixai-env-setup@master
- uses: actions/download-artifact@v4
with:
name: dist
path: ./dist
- name: Build
env: ${{ matrix.env }}
run: ${{ matrix.script }}
- name: Upload JUnit Report
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: junit-report-${{ matrix.platform }}
path: ./tmp/junit/junit.xml
- name: Publish JUnit Report
uses: mikepenz/action-junit-report@v5
with:
check_name: JUnit Test Report - ${{matrix.platform}}
report_paths: ./tmp/junit/junit.xml
- name: Upload Cobertura report
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: coverage-report-${{ matrix.platform }}
path: ./tmp/coverage/cobertura-coverage.xml
- name: Upload Metrics Report
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: metrics-report-${{ matrix.platform }}
path: ./benches/results/metrics.txt
if-no-files-found: ignore
staging-merge-finish:
name: "Staging / Merge Finish"
needs:
- staging-lint
- staging-merge-begin
- staging-build
- staging-platforms
runs-on: ubuntu-latest
concurrency:
group: staging-merge-finish
cancel-in-progress: true
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Merge Pull Request from Staging to Master
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }}
GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }}
GIT_COMMITTER_EMAIL: ${{ secrets.GIT_COMMITTER_EMAIL }}
GIT_COMMITTER_NAME: ${{ secrets.GIT_COMMITTER_NAME }}
run: |
printf "Pipeline Succeeded on $GITHUB_RUN_ID for $GITHUB_SHA\n\n$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" \
| gh pr comment staging \
--body-file - \
--repo "$GITHUB_REPOSITORY"
git checkout master
git merge --ff-only "$GITHUB_SHA"
git push origin master