name: CI on: push: branches: - main pull_request: branches: - main workflow_dispatch: jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: pnpm/action-setup@v5 - uses: actions/setup-node@v6 with: node-version: lts/* cache: pnpm # Setup .NET for Godot C# linting - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # Lint Godot C# code - name: Lint Godot C# working-directory: ./engines/stage-tamagotchi-godot run: dotnet format stage-tamagotchi-godot.sln --verify-no-changes - run: docker run -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest working-directory: ./apps/stage-pocket - run: pnpm install --frozen-lockfile - run: pnpm run lint - run: docker run -v `pwd`:`pwd` -w `pwd` ghcr.io/realm/swiftlint:latest working-directory: ./apps/stage-pocket build-test: name: Build Test (${{ matrix.app_name }}) if: ${{ !(github.event_name == 'pull_request' && startsWith(github.event.pull_request.head.label, 'moeru-ai:i18n/')) }} strategy: matrix: include: - app_name: stage-web command: pnpm -F @proj-airi/stage-web run build && pnpm -F @proj-airi/docs run build:base && mv ./docs/.vitepress/dist ./apps/stage-web/dist/docs && pnpm -F @proj-airi/stage-ui run story:build && mv ./packages/stage-ui/.histoire/dist ./apps/stage-web/dist/ui - app_name: stage-tamagotchi command: pnpm -F @proj-airi/stage-tamagotchi run build - app_name: stage-tamagotchi-godot command: cd engines/stage-tamagotchi-godot && dotnet restore && dotnet build -c ExportRelease - app_name: ui-transitions command: pnpm -F @proj-airi/ui-transitions run play:build - app_name: ui-loading-screens command: pnpm -F @proj-airi/ui-loading-screens run play:build runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 # Turborepo - name: Cache turbo build setup uses: actions/cache@v5 with: path: .turbo key: ${{ runner.os }}-turbo-${{ github.sha }} restore-keys: | ${{ runner.os }}-turbo- - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v6 with: node-version: lts/* cache: pnpm # Setup .NET and Godot - name: Setup .NET if: matrix.app_name == 'stage-tamagotchi-godot' uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' - name: Setup Godot if: matrix.app_name == 'stage-tamagotchi-godot' uses: chickensoft-games/setup-godot@v2 with: version: 4.6.2 use-dotnet: true include-templates: true - run: pnpm install --frozen-lockfile - run: pnpm run build:packages - name: Build App run: ${{ matrix.command }} - name: Export Godot Linux sidecar if: matrix.app_name == 'stage-tamagotchi-godot' working-directory: ./engines/stage-tamagotchi-godot run: | mkdir -p build/linux godot --headless --export-release "Linux" build/linux/godot-stage typecheck: name: Type Check runs-on: ubuntu-latest if: ${{ !(github.event_name == 'pull_request' && startsWith(github.event.pull_request.head.label, 'moeru-ai:i18n/')) }} steps: - uses: actions/checkout@v6 # Node.js - uses: pnpm/action-setup@v5 - uses: actions/setup-node@v6 with: node-version: lts/* cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm run typecheck check-provenance: name: Check Provenance runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: fetch-depth: 0 - uses: danielroe/provenance-action@main id: check with: fail-on-provenance-change: true # optional, default: false # lockfile: pnpm-lock.yaml # optional # base-ref: origin/main # optional, default: origin/main # fail-on-downgrade: true # optional, default: true - name: Print result run: "echo 'Downgraded: ${{ steps.check.outputs.downgraded }}'"