check #79
This file contains hidden or 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: check | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - main | |
| pull_request: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '17 3 * * *' | |
| jobs: | |
| check: | |
| name: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-24.04 | |
| - macos-15 | |
| - windows-2025 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MoonBit | |
| uses: hustcer/setup-moonbit@v1.23 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update registry | |
| run: moon update | |
| - name: Check | |
| run: moon check --target all --deny-warn | |
| - name: Test | |
| run: moon test --target all | |
| - name: Build release commands | |
| run: moon build --target native --release --deny-warn | |
| - name: Build Wasm release commands | |
| run: moon build --target wasm --release --deny-warn | |
| - name: Compatibility | |
| run: >- | |
| ./_build/native/release/build/mooxCLI/cmd-tests/runner/runner.exe | |
| --manifest tests/fixtures/runner/cases.json | |
| --native-root _build/native/release/build | |
| --suite compat | |
| - name: GNU differential | |
| if: runner.os == 'Linux' | |
| run: >- | |
| ./_build/native/release/build/mooxCLI/cmd-tests/runner/runner.exe | |
| --manifest tests/fixtures/runner/cases.json | |
| --native-root _build/native/release/build | |
| --suite compat --gnu-diff | |
| - name: Wasm policy | |
| run: >- | |
| ./_build/native/release/build/mooxCLI/cmd-tests/runner/runner.exe | |
| --manifest tests/fixtures/runner/cases.json | |
| --wasm-root _build/wasm/release/build | |
| --suite policy | |
| - name: Generated interfaces | |
| run: moon info | |
| - name: Format | |
| run: moon fmt | |
| - name: Verify generated files | |
| run: git diff --exit-code | |
| - name: Upload test artifacts | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cmd-check-${{ matrix.os }} | |
| path: | | |
| _build | |
| uncovered.log | |
| if-no-files-found: ignore | |
| oracle: | |
| name: pinned-upstream-oracle | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MoonBit | |
| uses: hustcer/setup-moonbit@v1.23 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update registry | |
| run: moon update | |
| - name: Build release commands | |
| run: moon build --target native --release --deny-warn | |
| - name: Validate oracle manifest | |
| run: >- | |
| ./_build/native/release/build/mooxCLI/cmd-tests/runner/runner.exe | |
| --manifest tests/fixtures/runner/cases.json --validate-only | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build pinned oracle image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: tests/runner/image | |
| load: true | |
| tags: mooncmd-oracle:phase0 | |
| cache-from: type=gha,scope=mooncmd-oracle | |
| cache-to: type=gha,mode=max,scope=mooncmd-oracle | |
| - name: Record oracle versions and image digest | |
| run: | | |
| docker run --rm mooncmd-oracle:phase0 /usr/local/bin/versions.sh | tee oracle-versions.txt | |
| IMAGE_ID=$(docker image inspect --format='{{.Id}}' mooncmd-oracle:phase0) | |
| printf 'Oracle image ID: `%s`\n\n' "$IMAGE_ID" | tee oracle-image.txt | |
| cat oracle-image.txt oracle-versions.txt >> "$GITHUB_STEP_SUMMARY" | |
| - name: Compare pinned upstream fixtures | |
| run: | | |
| umask 022 | |
| ./_build/native/release/build/mooxCLI/cmd-tests/runner/runner.exe \ | |
| --manifest tests/fixtures/runner/cases.json \ | |
| --native-root _build/native/release/build \ | |
| --suite oracle \ | |
| --oracle-image mooncmd-oracle:phase0 | |
| - name: Upload oracle evidence | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: pinned-upstream-oracle | |
| path: | | |
| oracle-image.txt | |
| oracle-versions.txt | |
| if-no-files-found: warn | |
| release-manifest: | |
| name: published-release-manifest | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MoonBit | |
| uses: hustcer/setup-moonbit@v1.23 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update registry | |
| run: moon update | |
| - name: Validate published release manifest | |
| run: >- | |
| moon run --target native tests/release_runner -- | |
| --manifest tests/release_runner/manifest.json --suite validate | |
| published-differential: | |
| name: published-version-differential | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MoonBit | |
| uses: hustcer/setup-moonbit@v1.23 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update registry | |
| run: moon update | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build pinned oracle image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: tests/runner/image | |
| load: true | |
| tags: mooncmd-oracle:phase0 | |
| cache-from: type=gha,scope=mooncmd-oracle | |
| cache-to: type=gha,mode=max,scope=mooncmd-oracle | |
| - name: Run published-version differential | |
| run: >- | |
| moon run --target native tests/release_runner -- | |
| --manifest tests/release_runner/manifest.json --suite differential | |
| --oracle-image mooncmd-oracle:phase0 | |
| --report-dir _build/release-report | |
| - name: Upload published differential report | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: published-version-differential | |
| path: _build/release-report | |
| if-no-files-found: warn | |
| published-smoke: | |
| name: published-version-smoke | |
| if: github.event_name == 'workflow_dispatch' || github.event_name == 'schedule' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-24.04 | |
| - macos-15 | |
| - windows-2025 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MoonBit | |
| uses: hustcer/setup-moonbit@v1.23 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update registry | |
| run: moon update | |
| - name: Run published-version smoke | |
| run: >- | |
| moon run --target native tests/release_runner -- | |
| --manifest tests/release_runner/manifest.json --suite smoke | |
| stress: | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - name: Setup MoonBit | |
| uses: hustcer/setup-moonbit@v1.23 | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Update registry | |
| run: moon update | |
| - name: Build release commands | |
| run: moon build --target native --release --deny-warn | |
| - name: Stress compatibility | |
| run: >- | |
| ./_build/native/release/build/mooxCLI/cmd-tests/runner/runner.exe | |
| --manifest tests/fixtures/runner/cases.json | |
| --native-root _build/native/release/build | |
| --suite compat --stress |