Mercurial
diff third_party/emsdk/.circleci/config.yml @ 179:8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Thu, 22 Jan 2026 21:23:17 -0800 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/third_party/emsdk/.circleci/config.yml Thu Jan 22 21:23:17 2026 -0800 @@ -0,0 +1,373 @@ +version: 2.1 + +orbs: + win: circleci/[email protected] + +executors: + ubuntu: + docker: + - image: buildpack-deps:jammy + mac_arm64: + environment: + EMSDK_NOTTY: "1" + # Without this, any `brew install` command will result in self-update of + # brew itself which takes more than 4 minutes. + HOMEBREW_NO_AUTO_UPDATE: "1" + macos: + # Corresponds to macOS 13.2.1 + # See https://circleci.com/docs/guides/execution-managed/using-macos/#supported-xcode-versions + xcode: "14.3.1" + resource_class: m4pro.medium + linux_arm64: + machine: + image: ubuntu-2004:2023.07.1 + resource_class: arm.medium + +commands: + setup-macos: + steps: + - checkout + - run: + name: Install CMake + command: brew install cmake + test-macos: + steps: + - run: + name: test.sh + command: test/test.sh + - run: + name: test.py + command: | + source emsdk_env.sh + test/test.py + test-bazel-linux: + steps: + - checkout + - run: + name: install bazelisk + command: | + wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-amd64 + chmod +x bazelisk-linux-amd64 + mv bazelisk-linux-amd64 /usr/local/bin/bazel + - run: test/test_bazel.sh + test-bazel-mac: + steps: + - checkout + - run: + name: install bazelisk + command: | + brew install bazelisk + - run: test/test_bazel_mac.sh + test-bazel-windows: + steps: + - checkout + - run: + name: Download Bazelisk + shell: powershell.exe + command: | + $ProgressPreference = "SilentlyContinue" + Invoke-WebRequest -Uri https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-windows-amd64.exe -OutFile ( New-Item -Path "temp\bazel\bazel.exe" -Force ) + - run: + name: Run Tests + shell: powershell.exe + command: | + $env:Path += ";C:\Python27amd64;$pwd\temp\bazel" + .\test\test_bazel.ps1 + +jobs: + lint: + executor: ubuntu + steps: + - checkout + - run: + name: install python deps + command: | + apt-get update -q + apt-get install -q -y python3-pip + - run: + name: python lint + command: | + python3 -m pip install --upgrade pip + python3 -m pip install flake8==7.1.1 ruff==0.14.1 + python3 -m flake8 --show-source --statistics --extend-exclude=./scripts + python3 -m ruff check + test-linux: + executor: ubuntu + environment: + EMSDK_NOTTY: "1" + # This is needed because the old gcc-7 that is installed on debian/bionic + # generates warnings about unused variables when doing C++17 + # destructuring: + # https://github.com/WebAssembly/binaryen/issues/4353 + CXXFLAGS: "-Wno-unused-variable" + # I don't know why circleci VMs pretent to have 36 cores but its a lie. + EMSDK_NUM_CORES: "4" + steps: + - checkout + - run: + name: Install debian packages + command: apt-get update -q && apt-get install -q -y cmake build-essential openjdk-8-jre-headless ksh zsh + - run: test/test_node_path.sh + - run: test/test.sh + - run: test/test_source_env.sh + - run: + name: test.py + command: | + source emsdk_env.sh + test/test.py + test-linux-arm64: + executor: linux_arm64 + steps: + - checkout + - run: + name: Install debian packages + command: sudo apt-get update -q && sudo apt-get install -q cmake build-essential openjdk-8-jre-headless + - run: test/test.sh + test-mac-arm64: + executor: mac_arm64 + steps: + - setup-macos + - test-macos + test-windows: + executor: + name: win/server-2019 + shell: bash.exe + environment: + PYTHONUNBUFFERED: "1" + EMSDK_NOTTY: "1" + steps: + - checkout + - run: where python + + - run: + name: Install latest + shell: cmd.exe + command: test\test.bat + + - run: + name: test.py + command: | + source emsdk_env.sh + python test/test.py + + - run: + name: flagless (process/shell) test + shell: powershell.exe + command: | + test/test_activation.ps1 + + - run: + name: --permanent test + shell: powershell.exe + command: | + $env:PERMANENT_FLAG="--permanent" + test/test_activation.ps1 + + - run: + name: --system test + shell: powershell.exe + command: | + $env:SYSTEM_FLAG="--system" + test/test_activation.ps1 + + - run: + name: Process/Shell PATH preservation test + shell: powershell.exe + command: | + test/test_path_preservation.ps1 + + - run: + name: User PATH preservation test + shell: powershell.exe + command: | + $env:PERMANENT_FLAG="--permanent" + test/test_path_preservation.ps1 + + - run: + name: System PATH preservation test + shell: powershell.exe + command: | + $env:SYSTEM_FLAG="--system" + test/test_path_preservation.ps1 + + build-docker-image-x64: + executor: ubuntu + steps: + - checkout + - run: + name: install docker + command: | + apt-get update -q + apt-get install -q -y ca-certificates curl gnupg lsb-release + mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update -q + apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin + - setup_remote_docker + # Build the `latest` version of EMSDK as docker image + - run: + name: build + command: make -C ./docker version=latest build + - run: + name: test + command: make -C ./docker version=latest test + + publish-docker-image-x64: + executor: ubuntu + steps: + - checkout + - run: + name: install docker + command: | + apt-get update -q + apt-get install -q -y ca-certificates curl gnupg lsb-release + mkdir -p /etc/apt/keyrings + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null + apt-get update -q + apt-get install -q -y docker-ce docker-ce-cli containerd.io docker-compose-plugin + - setup_remote_docker + - run: + name: build + command: make -C ./docker version=${CIRCLE_TAG} build + - run: + name: test + command: make -C ./docker version=${CIRCLE_TAG} test + - run: + name: push image + command: | + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + make -C ./docker version=${CIRCLE_TAG} tag=${CIRCLE_TAG}-x64 push + + publish-docker-image-arm64: + executor: linux_arm64 + steps: + - checkout + - run: + name: build + command: make -C ./docker version=${CIRCLE_TAG} build + - run: + name: test + command: make -C ./docker version=${CIRCLE_TAG} test + - run: + name: push image + command: | + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + make -C ./docker version=${CIRCLE_TAG} tag=${CIRCLE_TAG}-arm64 push + + publish-docker-image-multiplatform: + executor: linux_arm64 + steps: + - checkout + - run: + name: push image + command: | + docker login -u "$DOCKER_USER" -p "$DOCKER_PASS" + make -C ./docker version=${CIRCLE_TAG} tag=${CIRCLE_TAG} push-multiplatform + make -C ./docker version=${CIRCLE_TAG} tag="latest" push-multiplatform + + test-bazel7-linux: + executor: ubuntu + environment: + USE_BAZEL_VERSION: "7.x" + steps: + - test-bazel-linux + + test-bazel-latest-linux: + executor: ubuntu + steps: + - test-bazel-linux + + test-bazel7-mac-arm64: + executor: mac_arm64 + environment: + USE_BAZEL_VERSION: "7.x" + steps: + - test-bazel-mac + + test-bazel-latest-mac-arm64: + executor: mac_arm64 + steps: + - test-bazel-mac + + test-bazel7-windows: + executor: + name: win/server-2019 + shell: powershell.exe -ExecutionPolicy Bypass + environment: + PYTHONUNBUFFERED: "1" + EMSDK_NOTTY: "1" + # For some reason version resolution with "7.x" does not work on Windows, + # so we have to specify a full version. + USE_BAZEL_VERSION: "7.6.1" + steps: + - test-bazel-windows + + test-bazel-latest-windows: + executor: + name: win/server-2019 + shell: powershell.exe -ExecutionPolicy Bypass + environment: + PYTHONUNBUFFERED: "1" + EMSDK_NOTTY: "1" + steps: + - test-bazel-windows + +workflows: + lint: + jobs: + - lint + test-linux: + jobs: + - test-linux + test-linux-arm64: + jobs: + - test-linux-arm64 + test-mac-arm64: + jobs: + - test-mac-arm64 + test-windows: + jobs: + - test-windows + build-docker-image: + jobs: + - build-docker-image-x64 + - publish-docker-image-x64: + filters: + branches: + ignore: /.*/ + tags: + only: /.*/ + - publish-docker-image-arm64: + filters: + branches: + ignore: /.*/ + tags: + only: /.*/ + - publish-docker-image-multiplatform: + filters: + tags: + only: /.*/ + requires: + - publish-docker-image-x64 + - publish-docker-image-arm64 + + test-bazel7-linux: + jobs: + - test-bazel7-linux + test-bazel-latest-linux: + jobs: + - test-bazel-latest-linux + test-bazel7-mac-arm64: + jobs: + - test-bazel7-mac-arm64 + test-bazel-latest-mac-arm64: + jobs: + - test-bazel-latest-mac-arm64 + test-bazel7-windows: + jobs: + - test-bazel7-windows + test-bazel-latest-windows: + jobs: + - test-bazel-latest-windows