Skip to content

check

check #79

Workflow file for this run

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