From 42cfa69c7edd8fdad479bcfba2fb5994d21d65bb Mon Sep 17 00:00:00 2001 From: Dmitry Bushev Date: Thu, 19 Dec 2024 12:09:44 +0300 Subject: [PATCH] Run workflows depending on changed files (#11723) --- .github/workflows/engine-changed-files.yml | 55 +++++ ...-nightly.yml => engine-checks-nightly.yml} | 0 .github/workflows/engine-checks-optional.yml | 179 ++++++++++++++++ .../{scala-new.yml => engine-checks.yml} | 166 +-------------- .github/workflows/engine-pull-request.yml | 52 +++++ .github/workflows/gui-changed-files.yml | 57 +++++ .github/workflows/gui-checks.yml | 2 + .github/workflows/gui-packaging-optional.yml | 197 ++++++++++++++++++ .../workflows/gui-packaging-pull-request.yml | 54 +++++ .../workflows/{gui.yml => gui-packaging.yml} | 182 +--------------- .github/workflows/gui-pull-request.yml | 88 +++----- .github/workflows/shader-tools.yml | 105 ---------- .github/workflows/wasm-changed-files.yml | 51 +++++ .../{gui-tests.yml => wasm-checks.yml} | 22 +- .github/workflows/wasm-pull-request.yml | 42 ++++ build/build/paths.yaml | 11 +- build/build/src/ci_gen.rs | 155 +++++++++++--- .../src/actions/workflow/definition.rs | 30 +-- 18 files changed, 873 insertions(+), 575 deletions(-) create mode 100644 .github/workflows/engine-changed-files.yml rename .github/workflows/{engine-nightly.yml => engine-checks-nightly.yml} (100%) create mode 100644 .github/workflows/engine-checks-optional.yml rename .github/workflows/{scala-new.yml => engine-checks.yml} (69%) create mode 100644 .github/workflows/engine-pull-request.yml create mode 100644 .github/workflows/gui-changed-files.yml create mode 100644 .github/workflows/gui-packaging-optional.yml create mode 100644 .github/workflows/gui-packaging-pull-request.yml rename .github/workflows/{gui.yml => gui-packaging.yml} (66%) delete mode 100644 .github/workflows/shader-tools.yml create mode 100644 .github/workflows/wasm-changed-files.yml rename .github/workflows/{gui-tests.yml => wasm-checks.yml} (93%) create mode 100644 .github/workflows/wasm-pull-request.yml diff --git a/.github/workflows/engine-changed-files.yml b/.github/workflows/engine-changed-files.yml new file mode 100644 index 000000000000..e35c43956d66 --- /dev/null +++ b/.github/workflows/engine-changed-files.yml @@ -0,0 +1,55 @@ +# This file is not auto-generated. Feel free to edit it. + +name: Engine Changed Files + +on: + workflow_call: + outputs: + all_changed_files: + description: "Returns all changed files" + value: ${{ jobs.engine-changed-files.outputs.all_changed_files }} + any_changed: + description: "Returns `true` when any of the filenames have changed" + value: ${{ jobs.engine-changed-files.outputs.any_changed }} + +jobs: + engine-changed-files: + runs-on: ubuntu-latest + name: Changed Files + outputs: + all_changed_files: ${{ steps.engine-changed-files.outputs.all_changed_files }} + any_changed: ${{ steps.engine-changed-files.outputs.any_changed }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + - name: Get changed files + id: engine-changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + distribution/** + engine/** + lib/** + project/** + std-bits/** + test/** + build.sbt + .cargo/** + Cargo.lock + Cargo.toml + rust-toolchain.toml + .github/workflows/engine-changed-files.yml + .github/workflows/engine-checks-optional.yml + .github/workflows/engine-checks.yml + .github/workflows/engine-pull-request.yml + - name: List all changed files + env: + ALL_CHANGED_FILES: ${{ steps.engine-changed-files.outputs.all_changed_files }} + run: | + if [[ "${{ steps.engine-changed-files.outputs.any_changed }}" == "true" ]]; then + echo "Files changed:" + fi + for file in ${ALL_CHANGED_FILES}; do + echo "$file" + done diff --git a/.github/workflows/engine-nightly.yml b/.github/workflows/engine-checks-nightly.yml similarity index 100% rename from .github/workflows/engine-nightly.yml rename to .github/workflows/engine-checks-nightly.yml diff --git a/.github/workflows/engine-checks-optional.yml b/.github/workflows/engine-checks-optional.yml new file mode 100644 index 000000000000..ad1d1eb8ea7a --- /dev/null +++ b/.github/workflows/engine-checks-optional.yml @@ -0,0 +1,179 @@ +# This file is auto-generated. Do not edit it manually! +# Edit the enso_build::ci_gen module instead and run `cargo run --package enso-build-ci-gen`. + +name: Engine Checks (Optional) +on: + workflow_dispatch: + inputs: + clean_build_required: + description: Clean before and after the run. + required: false + type: boolean + default: false + workflow_call: {} +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-engine-checks-optional + cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} +jobs: + enso-build-ci-gen-job-ci-check-backend-graal-vm-ce-macos-amd64: + name: Engine (GraalVM CE) (macos, amd64) + runs-on: + - macos-13 + continue-on-error: true + steps: + - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') + name: Installing wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 + with: + version: v0.12.1 + - name: Expose Artifact API and context information. + uses: actions/github-script@v7 + with: + script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " + - name: Checking out the repository + uses: actions/checkout@v4 + with: + clean: false + submodules: recursive + - name: Build Script Setup + run: ./run --help || (git clean -ffdx && ./run --help) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean before + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: ./run backend ci-check + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: failure() && runner.os == 'Windows' + name: List files if failed (Windows) + run: Get-ChildItem -Force -Recurse + - if: failure() && runner.os != 'Windows' + name: List files if failed (non-Windows) + run: ls -lAR + - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean after + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + env: + GRAAL_EDITION: GraalVM CE + enso-build-ci-gen-job-jvm-tests-graal-vm-ce-macos-amd64: + name: JVM Tests (GraalVM CE) (macos, amd64) + runs-on: + - macos-13 + continue-on-error: true + steps: + - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') + name: Installing wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 + with: + version: v0.12.1 + - name: Expose Artifact API and context information. + uses: actions/github-script@v7 + with: + script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " + - name: Checking out the repository + uses: actions/checkout@v4 + with: + clean: false + submodules: recursive + - name: Build Script Setup + run: ./run --help || (git clean -ffdx && ./run --help) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean before + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: ./run backend test jvm + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: (success() || failure()) && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + name: Engine Test Reporter + uses: dorny/test-reporter@v1 + with: + max-annotations: 50 + name: Engine Tests Report (GraalVM CE, macos, amd64) + path: ${{ env.ENSO_TEST_JUNIT_DIR }}/*.xml + path-replace-backslashes: true + reporter: java-junit + - if: failure() && runner.os == 'Windows' + name: List files if failed (Windows) + run: Get-ChildItem -Force -Recurse + - if: failure() && runner.os != 'Windows' + name: List files if failed (non-Windows) + run: ls -lAR + - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean after + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + env: + GRAAL_EDITION: GraalVM CE + permissions: + checks: write + enso-build-ci-gen-job-standard-library-tests-graal-vm-ce-macos-amd64: + name: Standard Library Tests (GraalVM CE) (macos, amd64) + runs-on: + - macos-13 + continue-on-error: true + steps: + - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') + name: Installing wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 + with: + version: v0.12.1 + - name: Expose Artifact API and context information. + uses: actions/github-script@v7 + with: + script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " + - name: Checking out the repository + uses: actions/checkout@v4 + with: + clean: false + submodules: recursive + - name: Build Script Setup + run: ./run --help || (git clean -ffdx && ./run --help) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean before + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: ./run backend test standard-library + env: + ENSO_LIB_S3_AWS_ACCESS_KEY_ID: ${{ secrets.ENSO_LIB_S3_AWS_ACCESS_KEY_ID }} + ENSO_LIB_S3_AWS_REGION: ${{ secrets.ENSO_LIB_S3_AWS_REGION }} + ENSO_LIB_S3_AWS_SECRET_ACCESS_KEY: ${{ secrets.ENSO_LIB_S3_AWS_SECRET_ACCESS_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: (success() || failure()) && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) + name: Standard Library Test Reporter + uses: dorny/test-reporter@v1 + with: + max-annotations: 50 + name: Standard Library Tests Report (GraalVM CE, macos, amd64) + path: ${{ env.ENSO_TEST_JUNIT_DIR }}/*/*.xml + path-replace-backslashes: true + reporter: java-junit + - if: failure() && runner.os == 'Windows' + name: List files if failed (Windows) + run: Get-ChildItem -Force -Recurse + - if: failure() && runner.os != 'Windows' + name: List files if failed (non-Windows) + run: ls -lAR + - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean after + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + env: + GRAAL_EDITION: GraalVM CE + permissions: + checks: write +env: + ENSO_BUILD_SKIP_VERSION_CHECK: "true" diff --git a/.github/workflows/scala-new.yml b/.github/workflows/engine-checks.yml similarity index 69% rename from .github/workflows/scala-new.yml rename to .github/workflows/engine-checks.yml index 0615bdee35f0..80b81ed41535 100644 --- a/.github/workflows/scala-new.yml +++ b/.github/workflows/engine-checks.yml @@ -1,12 +1,8 @@ # This file is auto-generated. Do not edit it manually! # Edit the enso_build::ci_gen module instead and run `cargo run --package enso-build-ci-gen`. -name: Engine CI +name: Engine Checks on: - push: - branches: - - develop - pull_request: {} workflow_dispatch: inputs: clean_build_required: @@ -14,8 +10,9 @@ on: required: false type: boolean default: false + workflow_call: {} concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-engine-checks cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} jobs: enso-build-ci-gen-job-ci-check-backend-graal-vm-ce-linux-amd64: @@ -63,50 +60,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} env: GRAAL_EDITION: GraalVM CE - enso-build-ci-gen-job-ci-check-backend-graal-vm-ce-macos-amd64: - name: Engine (GraalVM CE) (macos, amd64) - runs-on: - - macos-13 - steps: - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') - name: Installing wasm-pack - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: v0.12.1 - - name: Expose Artifact API and context information. - uses: actions/github-script@v7 - with: - script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - name: Build Script Setup - run: ./run --help || (git clean -ffdx && ./run --help) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean before - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: ./run backend ci-check - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: failure() && runner.os == 'Windows' - name: List files if failed (Windows) - run: Get-ChildItem -Force -Recurse - - if: failure() && runner.os != 'Windows' - name: List files if failed (non-Windows) - run: ls -lAR - - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean after - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - env: - GRAAL_EDITION: GraalVM CE enso-build-ci-gen-job-ci-check-backend-graal-vm-ce-windows-amd64: name: Engine (GraalVM CE) (windows, amd64) runs-on: @@ -208,61 +161,6 @@ jobs: GRAAL_EDITION: GraalVM CE permissions: checks: write - enso-build-ci-gen-job-jvm-tests-graal-vm-ce-macos-amd64: - name: JVM Tests (GraalVM CE) (macos, amd64) - runs-on: - - macos-13 - steps: - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') - name: Installing wasm-pack - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: v0.12.1 - - name: Expose Artifact API and context information. - uses: actions/github-script@v7 - with: - script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - name: Build Script Setup - run: ./run --help || (git clean -ffdx && ./run --help) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean before - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: ./run backend test jvm - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: (success() || failure()) && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) - name: Engine Test Reporter - uses: dorny/test-reporter@v1 - with: - max-annotations: 50 - name: Engine Tests Report (GraalVM CE, macos, amd64) - path: ${{ env.ENSO_TEST_JUNIT_DIR }}/*.xml - path-replace-backslashes: true - reporter: java-junit - - if: failure() && runner.os == 'Windows' - name: List files if failed (Windows) - run: Get-ChildItem -Force -Recurse - - if: failure() && runner.os != 'Windows' - name: List files if failed (non-Windows) - run: ls -lAR - - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean after - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - env: - GRAAL_EDITION: GraalVM CE - permissions: - checks: write enso-build-ci-gen-job-jvm-tests-graal-vm-ce-windows-amd64: name: JVM Tests (GraalVM CE) (windows, amd64) runs-on: @@ -378,64 +276,6 @@ jobs: GRAAL_EDITION: GraalVM CE permissions: checks: write - enso-build-ci-gen-job-standard-library-tests-graal-vm-ce-macos-amd64: - name: Standard Library Tests (GraalVM CE) (macos, amd64) - runs-on: - - macos-13 - steps: - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') - name: Installing wasm-pack - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: v0.12.1 - - name: Expose Artifact API and context information. - uses: actions/github-script@v7 - with: - script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - name: Build Script Setup - run: ./run --help || (git clean -ffdx && ./run --help) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean before - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: ./run backend test standard-library - env: - ENSO_LIB_S3_AWS_ACCESS_KEY_ID: ${{ secrets.ENSO_LIB_S3_AWS_ACCESS_KEY_ID }} - ENSO_LIB_S3_AWS_REGION: ${{ secrets.ENSO_LIB_S3_AWS_REGION }} - ENSO_LIB_S3_AWS_SECRET_ACCESS_KEY: ${{ secrets.ENSO_LIB_S3_AWS_SECRET_ACCESS_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: (success() || failure()) && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) - name: Standard Library Test Reporter - uses: dorny/test-reporter@v1 - with: - max-annotations: 50 - name: Standard Library Tests Report (GraalVM CE, macos, amd64) - path: ${{ env.ENSO_TEST_JUNIT_DIR }}/*/*.xml - path-replace-backslashes: true - reporter: java-junit - - if: failure() && runner.os == 'Windows' - name: List files if failed (Windows) - run: Get-ChildItem -Force -Recurse - - if: failure() && runner.os != 'Windows' - name: List files if failed (non-Windows) - run: ls -lAR - - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean after - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - env: - GRAAL_EDITION: GraalVM CE - permissions: - checks: write enso-build-ci-gen-job-standard-library-tests-graal-vm-ce-windows-amd64: name: Standard Library Tests (GraalVM CE) (windows, amd64) runs-on: diff --git a/.github/workflows/engine-pull-request.yml b/.github/workflows/engine-pull-request.yml new file mode 100644 index 000000000000..a886fedc149e --- /dev/null +++ b/.github/workflows/engine-pull-request.yml @@ -0,0 +1,52 @@ +# This file is not auto-generated. Feel free to edit it. + +name: โœจ Engine + +on: + push: + branches: + - develop + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-engine-pull-request + cancel-in-progress: true + +permissions: + checks: write + +jobs: + engine-changed-files: + name: ๐Ÿ” Files Changed + uses: ./.github/workflows/engine-changed-files.yml + secrets: inherit + + engine-checks: + name: โš™๏ธ Checks + uses: ./.github/workflows/engine-checks.yml + needs: [engine-changed-files] + if: needs.engine-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' + secrets: inherit + + engine-checks-optional: + name: โš™๏ธ Checks (Optional) + uses: ./.github/workflows/engine-checks-optional.yml + needs: [engine-changed-files] + if: needs.engine-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' + secrets: inherit + + required-checks: + name: Required Checks + runs-on: ubuntu-latest + needs: [engine-checks] + if: always() + steps: + - name: Checks Summary + run: | + echo "Engine Checks: ${{ needs.engine-checks.result }}" + + if [[ "${{ needs.engine-checks.result }}" == "failure" ]]; then + exit 1 + fi + + echo "Success!" diff --git a/.github/workflows/gui-changed-files.yml b/.github/workflows/gui-changed-files.yml new file mode 100644 index 000000000000..d16036ae0093 --- /dev/null +++ b/.github/workflows/gui-changed-files.yml @@ -0,0 +1,57 @@ +# This file is not auto-generated. Feel free to edit it. + +name: GUI Changed Files + +on: + workflow_call: + outputs: + all_changed_files: + description: "Returns all changed files" + value: ${{ jobs.gui-changed-files.outputs.all_changed_files }} + any_changed: + description: "Returns `true` when any of the filenames have changed" + value: ${{ jobs.gui-changed-files.outputs.any_changed }} + +jobs: + gui-changed-files: + runs-on: ubuntu-latest + name: Changed Files + outputs: + all_changed_files: ${{ steps.gui-changed-files.outputs.all_changed_files }} + any_changed: ${{ steps.gui-changed-files.outputs.any_changed }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + - name: Get changed files + id: gui-changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + app/** + package.json + pnpm-lock.yaml + pnpm-workspace.yaml + eslint.config.js + .prettierrc.js + .prettierignore + vitest.workspace.ts + .github/workflows/gui-changed-files.yml + .github/workflows/gui-checks.yml + .github/workflows/gui-pull-request.yml + .github/workflows/storybook.yml + files_ignore: | + app/ide-desktop/** + app/gui/scripts/** + app/gui/.gitignore + .git-* + - name: List all changed files + env: + ALL_CHANGED_FILES: ${{ steps.gui-changed-files.outputs.all_changed_files }} + run: | + if [[ "${{ steps.gui-changed-files.outputs.any_changed }}" == "true" ]]; then + echo "Files changed:" + fi + for file in ${ALL_CHANGED_FILES}; do + echo "$file" + done diff --git a/.github/workflows/gui-checks.yml b/.github/workflows/gui-checks.yml index 97f6f3c12393..730d49198748 100644 --- a/.github/workflows/gui-checks.yml +++ b/.github/workflows/gui-checks.yml @@ -1,3 +1,5 @@ +# This file is not auto-generated. Feel free to edit it. + name: GUI Checks on: workflow_call diff --git a/.github/workflows/gui-packaging-optional.yml b/.github/workflows/gui-packaging-optional.yml new file mode 100644 index 000000000000..4f5ab0bfd79a --- /dev/null +++ b/.github/workflows/gui-packaging-optional.yml @@ -0,0 +1,197 @@ +# This file is auto-generated. Do not edit it manually! +# Edit the enso_build::ci_gen module instead and run `cargo run --package enso-build-ci-gen`. + +name: GUI Packaging (Optional) +on: + workflow_dispatch: + inputs: + clean_build_required: + description: Clean before and after the run. + required: false + type: boolean + default: false + workflow_call: {} +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-gui-packaging-optional + cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} +jobs: + enso-build-ci-gen-job-build-backend-macos-amd64: + name: Build Backend (macos, amd64) + runs-on: + - macos-13 + continue-on-error: true + steps: + - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') + name: Installing wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 + with: + version: v0.12.1 + - name: Expose Artifact API and context information. + uses: actions/github-script@v7 + with: + script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " + - name: Checking out the repository + uses: actions/checkout@v4 + with: + clean: false + submodules: recursive + - name: Build Script Setup + run: ./run --help || (git clean -ffdx && ./run --help) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean before + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: ./run backend get + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: failure() && runner.os == 'Windows' + name: List files if failed (Windows) + run: Get-ChildItem -Force -Recurse + - if: failure() && runner.os != 'Windows' + name: List files if failed (non-Windows) + run: ls -lAR + - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean after + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + enso-build-ci-gen-job-gui-build-macos-amd64: + name: GUI build (macos, amd64) + runs-on: + - macos-13 + continue-on-error: true + steps: + - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') + name: Installing wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 + with: + version: v0.12.1 + - name: Expose Artifact API and context information. + uses: actions/github-script@v7 + with: + script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " + - name: Checking out the repository + uses: actions/checkout@v4 + with: + clean: false + submodules: recursive + - name: Build Script Setup + run: ./run --help || (git clean -ffdx && ./run --help) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean before + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: ./run gui build + env: + ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} + ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} + ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: failure() && runner.os == 'Windows' + name: List files if failed (Windows) + run: Get-ChildItem -Force -Recurse + - if: failure() && runner.os != 'Windows' + name: List files if failed (non-Windows) + run: ls -lAR + - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean after + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + enso-build-ci-gen-job-package-ide-macos-amd64: + name: Package New IDE (macos, amd64) + needs: + - enso-build-ci-gen-job-build-backend-macos-amd64 + runs-on: + - macos-13 + continue-on-error: true + steps: + - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') + name: Installing wasm-pack + uses: jetli/wasm-pack-action@v0.4.0 + with: + version: v0.12.1 + - name: Expose Artifact API and context information. + uses: actions/github-script@v7 + with: + script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " + - name: Checking out the repository + uses: actions/checkout@v4 + with: + clean: false + submodules: recursive + - name: Build Script Setup + run: ./run --help || (git clean -ffdx && ./run --help) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean before + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: ./run ide build --backend-source current-ci-run --gui-upload-artifact false + env: + APPLEID: ${{ secrets.APPLE_NOTARIZATION_USERNAME }} + APPLEIDPASS: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }} + APPLETEAMID: ${{ secrets.APPLE_NOTARIZATION_TEAM_ID }} + CSC_FOR_PULL_REQUEST: "true" + CSC_IDENTITY_AUTO_DISCOVERY: "true" + CSC_KEY_PASSWORD: ${{ secrets.APPLE_CODE_SIGNING_CERT_PASSWORD }} + CSC_LINK: ${{ secrets.APPLE_CODE_SIGNING_CERT }} + ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} + ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} + ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - run: corepack pnpm -r --filter enso exec playwright test --timeout 300000 + env: + DEBUG: "pw:browser log:" + ENSO_TEST_USER: ${{ secrets.ENSO_CLOUD_TEST_ACCOUNT_USERNAME }} + ENSO_TEST_USER_PASSWORD: ${{ secrets.ENSO_CLOUD_TEST_ACCOUNT_PASSWORD }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: failure() + name: Upload Test Traces + uses: actions/upload-artifact@v4 + with: + compression-level: 0 + name: test-traces-macos-amd64 + path: app/ide-desktop/client/test-traces + - run: rm $HOME/.enso/credentials + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - if: failure() && runner.os == 'Windows' + name: List files if failed (Windows) + run: Get-ChildItem -Force -Recurse + - if: failure() && runner.os != 'Windows' + name: List files if failed (non-Windows) + run: ls -lAR + - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" + name: Clean after + run: ./run git-clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +env: + ENSO_BUILD_SKIP_VERSION_CHECK: "true" diff --git a/.github/workflows/gui-packaging-pull-request.yml b/.github/workflows/gui-packaging-pull-request.yml new file mode 100644 index 000000000000..c379bb18b3fb --- /dev/null +++ b/.github/workflows/gui-packaging-pull-request.yml @@ -0,0 +1,54 @@ +# This file is not auto-generated. Feel free to edit it. + +name: โœจ GUI Packaging + +on: + push: + branches: + - develop + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-gui-packaging-pull-request + cancel-in-progress: true + +jobs: + gui-changed-files: + name: ๐Ÿ” GUI Files Changed + uses: ./.github/workflows/gui-changed-files.yml + secrets: inherit + + engine-changed-files: + name: ๐Ÿ” Engine Files Changed + uses: ./.github/workflows/engine-changed-files.yml + secrets: inherit + + gui-packaging: + name: ๐Ÿ“ฆ Package + uses: ./.github/workflows/gui-packaging.yml + needs: [gui-changed-files, engine-changed-files] + if: needs.gui-changed-files.outputs.any_changed == 'true' || needs.engine-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' + secrets: inherit + + gui-packaging-optional: + name: ๐Ÿ“ฆ Package (Optional) + uses: ./.github/workflows/gui-packaging-optional.yml + needs: [gui-changed-files, engine-changed-files] + if: needs.gui-changed-files.outputs.any_changed == 'true' || needs.engine-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' + secrets: inherit + + required-checks: + name: Required Checks + runs-on: ubuntu-latest + needs: [gui-packaging] + if: always() + steps: + - name: Checks Summary + run: | + echo "GUI Packaging: ${{ needs.gui-packaging.result }}" + + if [[ "${{ needs.gui-packaging.result }}" == "failure" ]]; then + exit 1 + fi + + echo "Success!" diff --git a/.github/workflows/gui.yml b/.github/workflows/gui-packaging.yml similarity index 66% rename from .github/workflows/gui.yml rename to .github/workflows/gui-packaging.yml index c20b8cbca980..52fcced5cb4e 100644 --- a/.github/workflows/gui.yml +++ b/.github/workflows/gui-packaging.yml @@ -3,10 +3,6 @@ name: GUI Packaging on: - push: - branches: - - develop - pull_request: {} workflow_dispatch: inputs: clean_build_required: @@ -14,8 +10,9 @@ on: required: false type: boolean default: false + workflow_call: {} concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-gui-packaging cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} jobs: enso-build-ci-gen-job-build-backend-linux-amd64: @@ -61,48 +58,6 @@ jobs: run: ./run git-clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - enso-build-ci-gen-job-build-backend-macos-amd64: - name: Build Backend (macos, amd64) - runs-on: - - macos-13 - steps: - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') - name: Installing wasm-pack - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: v0.12.1 - - name: Expose Artifact API and context information. - uses: actions/github-script@v7 - with: - script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - name: Build Script Setup - run: ./run --help || (git clean -ffdx && ./run --help) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean before - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: ./run backend get - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: failure() && runner.os == 'Windows' - name: List files if failed (Windows) - run: Get-ChildItem -Force -Recurse - - if: failure() && runner.os != 'Windows' - name: List files if failed (non-Windows) - run: ls -lAR - - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean after - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} enso-build-ci-gen-job-build-backend-windows-amd64: name: Build Backend (windows, amd64) runs-on: @@ -201,60 +156,6 @@ jobs: run: ./run git-clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - enso-build-ci-gen-job-gui-build-macos-amd64: - name: GUI build (macos, amd64) - runs-on: - - macos-13 - steps: - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') - name: Installing wasm-pack - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: v0.12.1 - - name: Expose Artifact API and context information. - uses: actions/github-script@v7 - with: - script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - name: Build Script Setup - run: ./run --help || (git clean -ffdx && ./run --help) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean before - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: ./run gui build - env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} - ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} - ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: failure() && runner.os == 'Windows' - name: List files if failed (Windows) - run: Get-ChildItem -Force -Recurse - - if: failure() && runner.os != 'Windows' - name: List files if failed (non-Windows) - run: ls -lAR - - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean after - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} enso-build-ci-gen-job-gui-build-windows-amd64: name: GUI build (windows, amd64) runs-on: @@ -384,85 +285,6 @@ jobs: run: ./run git-clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - enso-build-ci-gen-job-package-ide-macos-amd64: - name: Package New IDE (macos, amd64) - needs: - - enso-build-ci-gen-job-build-backend-macos-amd64 - runs-on: - - macos-13 - steps: - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') - name: Installing wasm-pack - uses: jetli/wasm-pack-action@v0.4.0 - with: - version: v0.12.1 - - name: Expose Artifact API and context information. - uses: actions/github-script@v7 - with: - script: "\n core.exportVariable(\"ACTIONS_RUNTIME_TOKEN\", process.env[\"ACTIONS_RUNTIME_TOKEN\"])\n core.exportVariable(\"ACTIONS_RUNTIME_URL\", process.env[\"ACTIONS_RUNTIME_URL\"])\n core.exportVariable(\"GITHUB_RETENTION_DAYS\", process.env[\"GITHUB_RETENTION_DAYS\"])\n console.log(context)\n " - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - name: Build Script Setup - run: ./run --help || (git clean -ffdx && ./run --help) - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: "(contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean before - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: ./run ide build --backend-source current-ci-run --gui-upload-artifact false - env: - APPLEID: ${{ secrets.APPLE_NOTARIZATION_USERNAME }} - APPLEIDPASS: ${{ secrets.APPLE_NOTARIZATION_PASSWORD }} - APPLETEAMID: ${{ secrets.APPLE_NOTARIZATION_TEAM_ID }} - CSC_FOR_PULL_REQUEST: "true" - CSC_IDENTITY_AUTO_DISCOVERY: "true" - CSC_KEY_PASSWORD: ${{ secrets.APPLE_CODE_SIGNING_CERT_PASSWORD }} - CSC_LINK: ${{ secrets.APPLE_CODE_SIGNING_CERT }} - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} - ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} - ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - run: corepack pnpm -r --filter enso exec playwright test --timeout 300000 - env: - DEBUG: "pw:browser log:" - ENSO_TEST_USER: ${{ secrets.ENSO_CLOUD_TEST_ACCOUNT_USERNAME }} - ENSO_TEST_USER_PASSWORD: ${{ secrets.ENSO_CLOUD_TEST_ACCOUNT_PASSWORD }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: failure() - name: Upload Test Traces - uses: actions/upload-artifact@v4 - with: - compression-level: 0 - name: test-traces-macos-amd64 - path: app/ide-desktop/client/test-traces - - run: rm $HOME/.enso/credentials - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - if: failure() && runner.os == 'Windows' - name: List files if failed (Windows) - run: Get-ChildItem -Force -Recurse - - if: failure() && runner.os != 'Windows' - name: List files if failed (non-Windows) - run: ls -lAR - - if: "(always()) && (contains(github.event.pull_request.labels.*.name, 'CI: Clean build required') || inputs.clean_build_required)" - name: Clean after - run: ./run git-clean - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} enso-build-ci-gen-job-package-ide-windows-amd64: name: Package New IDE (windows, amd64) needs: diff --git a/.github/workflows/gui-pull-request.yml b/.github/workflows/gui-pull-request.yml index e388a90ca524..36d7f77faf93 100644 --- a/.github/workflows/gui-pull-request.yml +++ b/.github/workflows/gui-pull-request.yml @@ -1,6 +1,6 @@ # This file is not auto-generated. Feel free to edit it. -name: โœจ GUI Pull Request +name: โœจ GUI on: push: @@ -9,7 +9,7 @@ on: pull_request: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{ github.workflow }}-${{ github.ref }}-gui-pull-request cancel-in-progress: true permissions: @@ -20,68 +20,30 @@ permissions: checks: write jobs: - changed-files: - runs-on: ubuntu-latest - name: ๐Ÿ” GUI files changed - outputs: - all_changed_files: ${{ steps.changed-files.outputs.all_changed_files }} - any_changed: ${{ steps.changed-files.outputs.any_changed }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - files: | - app/** - package.json - pnpm-lock.yaml - pnpm-workspace.yaml - eslint.config.js - .prettierrc.js - .prettierignore - vitest.workspace.ts - .github/workflows/gui* - files_ignore: | - app/ide-desktop/** - app/gui/scripts/** - app/gui/.gitignore - .git-* - - - name: List all changed files - env: - ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} - run: | - for file in ${ALL_CHANGED_FILES}; do - echo "$file was changed" - done + gui-changed-files: + name: ๐Ÿ” Files Changed + uses: ./.github/workflows/gui-changed-files.yml + secrets: inherit prettier: name: ๐Ÿงน Prettier runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: ๐Ÿ“ฆ Setup pnpm uses: pnpm/action-setup@v4 - - uses: actions/setup-node@v4 name: โŽ” Setup Node with: node-version-file: .node-version cache: "pnpm" - - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 with: version: v0.12.1 - - name: ๐Ÿ“ฆ Install dependencies run: pnpm install --frozen-lockfile --ignore-scripts - - uses: actions/cache/restore@v4 name: Download cache id: cache @@ -91,10 +53,8 @@ jobs: key: ${{ runner.os }}-gui-${{ github.run_id }} restore-keys: | ${{ runner.os }}-gui - - name: Run prettier run: pnpm run ci:prettier - - name: ๐Ÿ’พ Save cache uses: actions/cache/save@v4 if: always() && steps.cache.outputs.cache-hit != 'true' @@ -104,35 +64,41 @@ jobs: path: | node_modules/.cache/prettier - checks: + gui-checks: name: ๐Ÿงฐ Checks uses: ./.github/workflows/gui-checks.yml - needs: [changed-files] - if: ${{ needs.changed-files.outputs.any_changed == 'true' }} + needs: [gui-changed-files] + if: needs.gui-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' secrets: inherit storybook: name: ๐Ÿ“š Deploy Storybook uses: ./.github/workflows/storybook.yml - needs: [changed-files] - if: ${{ needs.changed-files.outputs.any_changed == 'true' }} + needs: [gui-changed-files] + if: needs.gui-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' secrets: inherit - # This job is used to report success if the needed jobs were successful. - # This is a workaround to make optional jobs required if they run - report-success: - name: GUI Checks Success or Skipped + required-checks: + name: Required Checks runs-on: ubuntu-latest - needs: [checks, storybook] + needs: [prettier, gui-checks, storybook] if: always() steps: - - name: Report success + - name: Checks Summary run: | - echo "Checks: ${{ needs.checks.result }}" + echo "Prettier: ${{ needs.prettier.result }}" + echo "GUI Checks: ${{ needs.gui-checks.result }}" echo "Storybook: ${{ needs.storybook.result }}" - if [[ "${{ needs.checks.result }}" == "failure" || "${{ needs.storybook.result }}" == "failure" ]]; then - exit 1 - fi + declare -a checks + checks+=("${{ needs.prettier.result }}") + checks+=("${{ needs.gui-checks.result }}") + checks+=("${{ needs.storybook.result }}") + + for result in "${checks[@]}"; do + if [[ "$result" == "failure" ]]; then + exit 1 + fi + done echo "Success!" diff --git a/.github/workflows/shader-tools.yml b/.github/workflows/shader-tools.yml deleted file mode 100644 index 4f9250871d5b..000000000000 --- a/.github/workflows/shader-tools.yml +++ /dev/null @@ -1,105 +0,0 @@ -# This file is auto-generated. Do not edit it manually! -# Edit the build/shader-tools/src/ci.rs module instead and run `cargo run --package enso-build-ci-gen`. - -name: Package Tools -on: - workflow_dispatch: {} -jobs: - run-create-linux-latest: - name: Run create (LinuxLatest) - runs-on: - - ubuntu-latest - steps: - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - id: step_0 - run: cargo run --package enso-build-shader-tools --bin create - env: - GITHUB_TOKEN: ${{ secrets.CI_PRIVATE_TOKEN }} - outputs: - ENSO_RELEASE_ID: ${{ steps.step_0.outputs.ENSO_RELEASE_ID }} - timeout-minutes: 360 - run-package-linux-latest: - name: Run package (LinuxLatest) - needs: - - run-create-linux-latest - runs-on: - - ubuntu-latest - steps: - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - id: step_1 - run: cargo run --package enso-build-shader-tools --bin package - env: - GITHUB_TOKEN: ${{ secrets.CI_PRIVATE_TOKEN }} - env: - ENSO_RELEASE_ID: ${{ needs.run-create-linux-latest.outputs.ENSO_RELEASE_ID }} - timeout-minutes: 360 - run-package-mac-os-latest: - name: Run package (MacOSLatest) - needs: - - run-create-linux-latest - runs-on: - - macos-latest - steps: - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - id: step_3 - run: cargo run --package enso-build-shader-tools --bin package - env: - GITHUB_TOKEN: ${{ secrets.CI_PRIVATE_TOKEN }} - env: - ENSO_RELEASE_ID: ${{ needs.run-create-linux-latest.outputs.ENSO_RELEASE_ID }} - timeout-minutes: 360 - run-package-windows-latest: - name: Run package (WindowsLatest) - needs: - - run-create-linux-latest - runs-on: - - windows-latest - steps: - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - id: step_2 - run: cargo run --package enso-build-shader-tools --bin package - env: - GITHUB_TOKEN: ${{ secrets.CI_PRIVATE_TOKEN }} - env: - ENSO_RELEASE_ID: ${{ needs.run-create-linux-latest.outputs.ENSO_RELEASE_ID }} - timeout-minutes: 360 - run-publish-linux-latest: - name: Run publish (LinuxLatest) - needs: - - run-create-linux-latest - - run-package-linux-latest - - run-package-mac-os-latest - - run-package-windows-latest - runs-on: - - ubuntu-latest - steps: - - name: Checking out the repository - uses: actions/checkout@v4 - with: - clean: false - submodules: recursive - - id: step_4 - run: cargo run --package enso-build-shader-tools --bin publish - env: - GITHUB_TOKEN: ${{ secrets.CI_PRIVATE_TOKEN }} - env: - ENSO_RELEASE_ID: ${{ needs.run-create-linux-latest.outputs.ENSO_RELEASE_ID }} - timeout-minutes: 360 -env: - ENSO_BUILD_SKIP_VERSION_CHECK: "true" diff --git a/.github/workflows/wasm-changed-files.yml b/.github/workflows/wasm-changed-files.yml new file mode 100644 index 000000000000..fdbf1aa2b345 --- /dev/null +++ b/.github/workflows/wasm-changed-files.yml @@ -0,0 +1,51 @@ +# This file is not auto-generated. Feel free to edit it. + +name: WASM Changed Files + +on: + workflow_call: + outputs: + all_changed_files: + description: "Returns all changed files" + value: ${{ jobs.wasm-changed-files.outputs.all_changed_files }} + any_changed: + description: "Returns `true` when any of the filenames have changed" + value: ${{ jobs.wasm-changed-files.outputs.any_changed }} + +jobs: + wasm-changed-files: + runs-on: ubuntu-latest + name: Changed Files + outputs: + all_changed_files: ${{ steps.wasm-changed-files.outputs.all_changed_files }} + any_changed: ${{ steps.wasm-changed-files.outputs.any_changed }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 2 + - name: Get changed files + id: wasm-changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + .cargo/** + app/rust-ffi/** + build/** + lib/rust/** + tools/language-server/logstat/** + tools/language-server/wstest/** + Cargo.lock + Cargo.toml + rust-toolchain.toml + rustfmt.toml + .github/workflows/wasm* + - name: List all changed files + env: + ALL_CHANGED_FILES: ${{ steps.wasm-changed-files.outputs.all_changed_files }} + run: | + if [[ "${{ steps.wasm-changed-files.outputs.any_changed }}" == "true" ]]; then + echo "Files changed:" + fi + for file in ${ALL_CHANGED_FILES}; do + echo "$file" + done diff --git a/.github/workflows/gui-tests.yml b/.github/workflows/wasm-checks.yml similarity index 93% rename from .github/workflows/gui-tests.yml rename to .github/workflows/wasm-checks.yml index 4abe8f1d23f3..246f8bb97305 100644 --- a/.github/workflows/gui-tests.yml +++ b/.github/workflows/wasm-checks.yml @@ -1,12 +1,8 @@ # This file is auto-generated. Do not edit it manually! # Edit the enso_build::ci_gen module instead and run `cargo run --package enso-build-ci-gen`. -name: GUI Check +name: WASM Checks on: - push: - branches: - - develop - pull_request: {} workflow_dispatch: inputs: clean_build_required: @@ -14,19 +10,11 @@ on: required: false type: boolean default: false + workflow_call: {} +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-wasm-checks + cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }} jobs: - enso-build-ci-gen-job-cancel-workflow-linux-amd64: - name: Cancel Previous Runs - if: github.ref != 'refs/heads/develop' - runs-on: - - ubuntu-latest - steps: - - name: Cancel Previous Runs - uses: styfle/cancel-workflow-action@0.12.1 - with: - access_token: ${{ github.token }} - permissions: - actions: write enso-build-ci-gen-job-lint-linux-amd64: name: Lint (linux, amd64) runs-on: diff --git a/.github/workflows/wasm-pull-request.yml b/.github/workflows/wasm-pull-request.yml new file mode 100644 index 000000000000..16aecc6559f5 --- /dev/null +++ b/.github/workflows/wasm-pull-request.yml @@ -0,0 +1,42 @@ +# This file is not auto-generated. Feel free to edit it. + +name: โœจ WASM + +on: + push: + branches: + - develop + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }}-wasm-pull-request + cancel-in-progress: true + +jobs: + wasm-changed-files: + name: ๐Ÿ” Files Changed + uses: ./.github/workflows/wasm-changed-files.yml + secrets: inherit + + wasm-checks: + name: ๐Ÿฆ€ Checks + uses: ./.github/workflows/wasm-checks.yml + needs: [wasm-changed-files] + if: needs.wasm-changed-files.outputs.any_changed == 'true' || github.ref == 'refs/heads/develop' + secrets: inherit + + required-checks: + name: Required Checks + runs-on: ubuntu-latest + needs: [wasm-checks] + if: always() + steps: + - name: Checks Summary + run: | + echo "WASM Checks: ${{ needs.wasm-checks.result }}" + + if [[ "${{ needs.wasm-checks.result }}" == "failure" ]]; then + exit 1 + fi + + echo "Success!" diff --git a/build/build/paths.yaml b/build/build/paths.yaml index 9db33cbe4404..288c22dd6efa 100644 --- a/build/build/paths.yaml +++ b/build/build/paths.yaml @@ -7,16 +7,17 @@ workflows/: changelog.yml: engine-benchmark.yml: - gui-tests.yml: - gui.yml: - engine-nightly.yml: + engine-checks-nightly.yml: + engine-checks-optional.yml: + engine-checks.yml: extra-nightly-tests.yml: + gui-packaging-optional.yml: + gui-packaging.yml: nightly.yml: promote.yml: release.yml: - scala-new.yml: - shader-tools.yml: std-libs-benchmark.yml: + wasm-checks.yml: app/: gui/: # GUI. dist/: diff --git a/build/build/src/ci_gen.rs b/build/build/src/ci_gen.rs index aee020a8532e..21b82493be98 100644 --- a/build/build/src/ci_gen.rs +++ b/build/build/src/ci_gen.rs @@ -79,6 +79,11 @@ pub const RELEASE_TARGETS: [(OS, Arch); 4] = [ pub const PR_CHECKED_TARGETS: [(OS, Arch); 3] = [(OS::Windows, Arch::X86_64), (OS::Linux, Arch::X86_64), (OS::MacOS, Arch::X86_64)]; +pub const PR_REQUIRED_TARGETS: [(OS, Arch); 2] = + [(OS::Windows, Arch::X86_64), (OS::Linux, Arch::X86_64)]; + +pub const PR_OPTIONAL_TARGETS: [(OS, Arch); 1] = [(OS::MacOS, Arch::X86_64)]; + pub const DEFAULT_BRANCH_NAME: &str = "develop"; pub const RELEASE_CONCURRENCY_GROUP: &str = "release"; @@ -474,6 +479,16 @@ impl PromoteReleaseJob { pub const PROMOTE_STEP_ID: &'static str = "promote"; } +fn concurrency(group: impl AsRef) -> Concurrency { + let github_workflow = wrap_expression("github.workflow"); + let github_ref = wrap_expression("github.ref"); + let group_ref = group.as_ref(); + Concurrency::Map { + group: format!("{github_workflow}-{github_ref}-{group_ref}"), + cancel_in_progress: wrap_expression(not_default_branch()), + } +} + /// Generate a workflow that checks if the changelog has been updated (if needed). pub fn changelog() -> Result { use PullRequestActivityType::*; @@ -552,15 +567,35 @@ fn add_release_steps(workflow: &mut Workflow) -> Result { Ok(()) } -/// Add jobs that perform backend checks ,including Scala and Standard Library tests. +/// Add jobs that perform backend checks, including Scala and Standard Library tests. +pub fn add_backend_checks_customized( + workflow: &mut Workflow, + target: Target, + graal_edition: graalvm::Edition, + continue_on_error: impl Fn(&Target) -> Option, +) { + workflow.add_customized(target, job::CiCheckBackend { graal_edition }, |job| { + job.continue_on_error = continue_on_error(&target); + }); + workflow.add_customized(target, job::JvmTests { graal_edition }, |job| { + job.continue_on_error = continue_on_error(&target); + }); + workflow.add_customized( + target, + job::StandardLibraryTests { graal_edition, cloud_tests_enabled: false }, + |job| { + job.continue_on_error = continue_on_error(&target); + }, + ); +} + +/// Add jobs that perform backend checks, including Scala and Standard Library tests. pub fn add_backend_checks( workflow: &mut Workflow, target: Target, graal_edition: graalvm::Edition, ) { - workflow.add(target, job::CiCheckBackend { graal_edition }); - workflow.add(target, job::JvmTests { graal_edition }); - workflow.add(target, job::StandardLibraryTests { graal_edition, cloud_tests_enabled: false }); + add_backend_checks_customized(workflow, target, graal_edition, |_| None); } pub fn workflow_call_job(name: impl Into, path: impl Into) -> Job { @@ -648,15 +683,20 @@ pub fn typical_check_triggers() -> Event { } } -pub fn gui() -> Result { +pub fn gui_packaging() -> Result { + let on = Event { + workflow_dispatch: Some(manual_workflow_dispatch()), + workflow_call: Some(default()), + ..default() + }; let mut workflow = Workflow { name: "GUI Packaging".into(), - on: typical_check_triggers(), - concurrency: Some(concurrency()), + concurrency: Some(concurrency("gui-packaging")), + on, ..default() }; - for target in PR_CHECKED_TARGETS { + for target in PR_REQUIRED_TARGETS { let project_manager_job = workflow.add(target, job::BuildBackend); workflow.add_customized(target, job::PackageIde, |job| { job.needs.insert(project_manager_job.clone()); @@ -666,40 +706,93 @@ pub fn gui() -> Result { Ok(workflow) } -pub fn gui_tests() -> Result { - let on = typical_check_triggers(); - let mut workflow = Workflow { name: "GUI Check".into(), on, ..default() }; - workflow.add(PRIMARY_TARGET, job::CancelWorkflow); +pub fn gui_packaging_optional() -> Result { + let on = Event { + workflow_dispatch: Some(manual_workflow_dispatch()), + workflow_call: Some(default()), + ..default() + }; + let mut workflow = Workflow { + name: "GUI Packaging (Optional)".into(), + concurrency: Some(concurrency("gui-packaging-optional")), + on, + ..default() + }; + + for target in PR_OPTIONAL_TARGETS { + let continue_on_error = Some(true); + let project_manager_job = workflow.add_customized(target, job::BuildBackend, |job| { + job.continue_on_error = continue_on_error; + }); + workflow.add_customized(target, job::PackageIde, |job| { + job.needs.insert(project_manager_job.clone()); + job.continue_on_error = continue_on_error; + }); + workflow.add_customized(target, job::GuiBuild, |job| { + job.continue_on_error = continue_on_error; + }); + } + Ok(workflow) +} + +pub fn wasm_checks() -> Result { + let on = Event { + workflow_dispatch: Some(manual_workflow_dispatch()), + workflow_call: Some(default()), + ..default() + }; + let mut workflow = Workflow { + name: "WASM Checks".into(), + concurrency: Some(concurrency("wasm-checks")), + on, + ..default() + }; workflow.add(PRIMARY_TARGET, job::Lint); workflow.add(PRIMARY_TARGET, job::WasmTest); workflow.add(PRIMARY_TARGET, job::NativeTest); Ok(workflow) } -fn concurrency() -> Concurrency { - let github_workflow = wrap_expression("github.workflow"); - let github_ref = wrap_expression("github.ref"); - Concurrency::Map { - group: format!("{github_workflow}-{github_ref}"), - cancel_in_progress: wrap_expression(not_default_branch()), +pub fn engine_checks() -> Result { + let on = Event { + workflow_dispatch: Some(manual_workflow_dispatch()), + workflow_call: Some(default()), + ..default() + }; + let mut workflow = Workflow { + name: "Engine Checks".into(), + concurrency: Some(concurrency("engine-checks")), + on, + ..default() + }; + workflow.add(PRIMARY_TARGET, job::VerifyLicensePackages); + for target in PR_REQUIRED_TARGETS { + add_backend_checks(&mut workflow, target, graalvm::Edition::Community); } + Ok(workflow) } -pub fn backend() -> Result { +pub fn engine_checks_optional() -> Result { + let on = Event { + workflow_dispatch: Some(manual_workflow_dispatch()), + workflow_call: Some(default()), + ..default() + }; let mut workflow = Workflow { - name: "Engine CI".into(), - on: typical_check_triggers(), - concurrency: Some(concurrency()), + name: "Engine Checks (Optional)".into(), + concurrency: Some(concurrency("engine-checks-optional")), + on, ..default() }; - workflow.add(PRIMARY_TARGET, job::VerifyLicensePackages); - for target in PR_CHECKED_TARGETS { - add_backend_checks(&mut workflow, target, graalvm::Edition::Community); + for target in PR_OPTIONAL_TARGETS { + add_backend_checks_customized(&mut workflow, target, graalvm::Edition::Community, |_| { + Some(true) + }); } Ok(workflow) } -pub fn engine_nightly() -> Result { +pub fn engine_checks_nightly() -> Result { let on = Event { schedule: vec![Schedule::new("0 3 * * *")?], workflow_dispatch: Some(manual_workflow_dispatch()), @@ -805,11 +898,13 @@ pub fn generate( let workflows = [ (repo_root.changelog_yml.to_path_buf(), changelog()?), (repo_root.nightly_yml.to_path_buf(), nightly()?), - (repo_root.scala_new_yml.to_path_buf(), backend()?), - (repo_root.engine_nightly_yml.to_path_buf(), engine_nightly()?), + (repo_root.engine_checks_yml.to_path_buf(), engine_checks()?), + (repo_root.engine_checks_optional_yml.to_path_buf(), engine_checks_optional()?), + (repo_root.engine_checks_nightly_yml.to_path_buf(), engine_checks_nightly()?), (repo_root.extra_nightly_tests_yml.to_path_buf(), extra_nightly_tests()?), - (repo_root.gui_yml.to_path_buf(), gui()?), - (repo_root.gui_tests_yml.to_path_buf(), gui_tests()?), + (repo_root.gui_packaging_yml.to_path_buf(), gui_packaging()?), + (repo_root.gui_packaging_optional_yml.to_path_buf(), gui_packaging_optional()?), + (repo_root.wasm_checks_yml.to_path_buf(), wasm_checks()?), (repo_root.engine_benchmark_yml.to_path_buf(), engine_benchmark()?), (repo_root.std_libs_benchmark_yml.to_path_buf(), std_libs_benchmark()?), (repo_root.release_yml.to_path_buf(), release()?), diff --git a/build/ci_utils/src/actions/workflow/definition.rs b/build/ci_utils/src/actions/workflow/definition.rs index 0c3410c8ce8a..4dec2a1164de 100644 --- a/build/ci_utils/src/actions/workflow/definition.rs +++ b/build/ci_utils/src/actions/workflow/definition.rs @@ -668,33 +668,35 @@ pub enum JobSecrets { #[derive(Clone, Debug, Default, Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] pub struct Job { - pub name: String, + pub name: String, #[serde(skip_serializing_if = "BTreeSet::is_empty")] - pub needs: BTreeSet, + pub needs: BTreeSet, #[serde(skip_serializing_if = "Option::is_none")] - pub r#if: Option, + pub r#if: Option, #[serde(skip_serializing_if = "Vec::is_empty")] - pub runs_on: Vec, + pub runs_on: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + pub continue_on_error: Option, #[serde(skip_serializing_if = "Vec::is_empty")] - pub steps: Vec, + pub steps: Vec, #[serde(skip_serializing_if = "Option::is_none")] - pub concurrency: Option, + pub concurrency: Option, #[serde(skip_serializing_if = "BTreeMap::is_empty")] - pub outputs: BTreeMap, + pub outputs: BTreeMap, #[serde(skip_serializing_if = "BTreeMap::is_empty")] - pub env: BTreeMap, + pub env: BTreeMap, #[serde(skip_serializing_if = "Option::is_none")] - pub strategy: Option, + pub strategy: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub timeout_minutes: Option, + pub timeout_minutes: Option, #[serde(skip_serializing_if = "Option::is_none")] - pub uses: Option, + pub uses: Option, #[serde(skip_serializing_if = "BTreeMap::is_empty")] - pub with: BTreeMap, + pub with: BTreeMap, #[serde(skip_serializing_if = "Option::is_none")] - pub secrets: Option, + pub secrets: Option, #[serde(skip_serializing_if = "BTreeMap::is_empty")] - pub permissions: BTreeMap, + pub permissions: BTreeMap, } impl Job {