-
Notifications
You must be signed in to change notification settings - Fork 3.8k
[CI] Cross-platform — Part 2: ARM/Spark workflow #5698
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
hujc7
merged 70 commits into
isaac-sim:develop
from
hujc7:jichuanh/windows-spark-ci-cartpole
Jul 10, 2026
Merged
Changes from all commits
Commits
Show all changes
70 commits
Select commit
Hold shift + click to select a range
9242498
[CI] Add Windows + ARM pytest markers and shared scaffolding
hujc7 98a5b68
[CI] Add ARM/Spark CI workflow
hujc7 a28308c
Merge remote-tracking branch 'origin/develop' into jichuanh/windows-s…
hujc7 b3d7f7c
Cleanups: pytetwild aarch64 + Dockerfile.arm-ci
hujc7 955e28c
TEMP: disable heavy Linux Docker + Tests while iterating ARM CI
hujc7 75e367c
arm-ci: install isaacsim and ov[ovrtx] via ./isaaclab.sh -i
hujc7 dadfe52
arm-ci: use bundled Sim (symlink _isaac_sim → /isaac-sim), drop uv venv
hujc7 ef9e199
arm-ci: Tier 2 invokes ./isaaclab.sh -p (bundled Sim python)
hujc7 c64755b
arm-ci: build via Dockerfile.base through ecr-build-push-pull
hujc7 1dc5ac2
arm-ci: re-create _isaac_sim symlink on bind-mounted workspace
hujc7 16db25e
arm-ci: run tests via shared .github/actions/run-tests
hujc7 d849323
arm-ci: enable LFS checkout + skip ovrtx renderer on aarch64
hujc7 eb89153
Revert TEMP-disable: re-enable Linux Docker + Tests on this branch
hujc7 d55e64a
Add cartpole training smoke (state + perception) for arm_ci
hujc7 45e4143
TEMP: disable heavy Linux Docker + Tests while iterating cartpole smoke
hujc7 609d97e
cartpole train smoke: fix _REPO_ROOT off-by-one (parents[4]→[3])
hujc7 5f0dc9a
cartpole train smoke: use rl_games for the perception case
hujc7 c859044
Short-circuit ecr-build-push-pull when image is local
hujc7 693c362
Add local deps-cache to ecr-build-push-pull
hujc7 3f1e7c5
Document local deps-cache behavior in arm-ci.yaml
hujc7 026793e
Add disk observability and 14-day deps-cache eviction
hujc7 f7fe0ce
Merge origin/develop into jichuanh/windows-spark-ci-cartpole
hujc7 1ae351f
arm-ci: collapse build-arm + arm-ci into one job
hujc7 17be934
arm-ci: extract detect-changes into composite action
hujc7 f2378c9
Consolidate changelog fragments to one per touched package
hujc7 c9f064d
Drop unused windows / arm pytest markers
hujc7 445c0f1
Address codex review on local-cache + detect-changes work
hujc7 3afe9b3
Split docker-build out of ecr-build-push-pull
hujc7 9eaa4ae
daily-compatibility: opt in to GHA cache after docker-build refactor
hujc7 a5491bf
docker-build: broaden eviction + snapshot filter to isaac-lab*
hujc7 a1eec9f
ecr-build-push-pull: revert incidental edits, keep minimal delegation
hujc7 08aa101
daily-compatibility: trigger on PRs that change its dependencies
hujc7 4f528eb
daily-compatibility: drop auto-trigger, document manual run on changes
hujc7 679b09d
daily-compatibility: consolidate duplicate TODO into header
hujc7 2c740b8
Merge origin/develop into jichuanh/windows-spark-ci-cartpole
hujc7 f7b3cd1
conftest: separate CI_MARKER from ISAACSIM_CI_SHORT, don't alias
hujc7 bd1613b
arm-ci: skip ovphysx parametrize cases on aarch64
hujc7 74a3a83
changelog: cover ovphysx alongside ovrtx aarch64 skip
hujc7 4bd088f
Revert TEMP build.yaml override; restore full Docker + Tests gating
hujc7 a9711ef
conftest: guard ci_marker post-scan open() against OSError
hujc7 d7fb1bd
conftest: differentiate ci_marker OSError handling between scans
hujc7 dae0566
conftest: drop try/except wrappers on ci_marker open() calls
hujc7 ed21510
Share CI utilities across build.yaml and arm-ci.yaml
hujc7 c7c4124
Fold arm-ci.yaml into build.yaml
hujc7 4d276e0
Trigger CI with ci-skip-amd64 label active
hujc7 2ab6062
Merge remote-tracking branch 'origin/develop' into jichuanh/windows-s…
hujc7 b52497d
ci: expand ci-arm-only label to gate non-arm workflows
hujc7 4f70f4b
Revert detect-changes composite; restore inline change detection
hujc7 ba55018
Drop CI_IMAGE_TAG_ARM64 env var; inline -arm64 suffix
hujc7 61aab1e
Drop unused outputs from docker-build action
hujc7 23456a5
Tighten arm-ci action surface; unmask amd64 + other workflows
hujc7 2965d2e
docker-build: restore develop's input descriptions
hujc7 e54b707
Drop dead arm_ci marker and orphaned changelog bullet
hujc7 7b13e52
Convert _lib shared scripts to composite actions
hujc7 2db1482
arm-ci: opt into docker-build stale-cache eviction
hujc7 c54e512
Apply post-review fixes; scope test tags to arm_ci only
hujc7 acb09f2
Merge remote-tracking branch 'origin/develop' into jichuanh/windows-s…
hujc7 5cbba72
Move cartpole smoke test into test/core/ after tasks split
hujc7 df786d2
Raise cartpole perception smoke-test timeout for cold shader cache
hujc7 e6184ab
Merge remote-tracking branch 'origin/develop' into jichuanh/windows-s…
hujc7 6f2bdec
Update cartpole smoke test to unversioned task IDs
hujc7 ce83cbe
Merge remote-tracking branch 'origin/develop' into jichuanh/windows-s…
hujc7 9b8f64e
Consolidate ARM Cartpole smoke coverage
hujc7 62da9f0
Merge upstream develop into ARM CI branch
hujc7 403ec5e
Fix ARM CI after develop merge
hujc7 86e9cac
Fix Cartpole smoke CI dependencies
hujc7 38b71ba
Merge remote-tracking branch 'origin/develop' into jichuanh/windows-s…
hujc7 05145d8
Merge latest develop into ARM CI
hujc7 d5b99ad
Filter ovphysx test params out of arm-ci pytest runs
hujc7 71dccf6
Merge latest develop into ARM CI
hujc7 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| # Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md). | ||
| # All rights reserved. | ||
| # | ||
| # SPDX-License-Identifier: BSD-3-Clause | ||
|
|
||
| name: 'Compute deps hash' | ||
| description: > | ||
| Compute the deps-cache hash for the Isaac Lab Docker build. Shared by the | ||
| docker-build (local-store check) and ecr-build-push-pull (registry check) | ||
| actions so a local hit and a registry hit always agree on the same | ||
| `deps-<hash>` tag. Hashes the install-relevant files, resolved base image | ||
| digest, and target platform. | ||
|
|
||
| inputs: | ||
| dockerfile-path: | ||
| description: 'Path to Dockerfile' | ||
| required: true | ||
| isaacsim-base-image: | ||
| description: 'IsaacSim base image' | ||
| required: true | ||
| isaacsim-version: | ||
| description: 'IsaacSim version' | ||
| required: true | ||
| platform: | ||
| description: 'Target platform included in the dependency-cache identity' | ||
| default: 'linux/amd64' | ||
| required: false | ||
|
|
||
| outputs: | ||
| hash: | ||
| description: '16-char deps-cache hash' | ||
| value: ${{ steps.compute.outputs.hash }} | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| - id: compute | ||
| shell: bash | ||
| env: | ||
| DOCKERFILE_PATH: ${{ inputs.dockerfile-path }} | ||
| ISAACSIM_BASE_IMAGE: ${{ inputs.isaacsim-base-image }} | ||
| ISAACSIM_VERSION: ${{ inputs.isaacsim-version }} | ||
| TARGET_PLATFORM: ${{ inputs.platform }} | ||
| run: | | ||
| set -euo pipefail | ||
|
|
||
| # Exact files/dirs whose full content is hashed. The Dockerfile is first. | ||
| deps_files=( | ||
| "${DOCKERFILE_PATH}" | ||
| isaaclab.sh | ||
| environment.yml | ||
| source/isaaclab/isaaclab/cli | ||
| ) | ||
| deps_manifest_pattern='(setup\.py|pyproject\.toml|setup\.cfg|extension\.toml|requirements[^/]*\.txt|uv\.lock)$' | ||
|
|
||
| # Resolve the actual base image digest so a new push of a mutable tag | ||
| # (e.g. latest-develop) invalidates the deps cache automatically. | ||
| base_image_digest=$(docker buildx imagetools inspect \ | ||
| "${ISAACSIM_BASE_IMAGE}:${ISAACSIM_VERSION}" \ | ||
| --format '{{json .Manifest.Digest}}' 2>/dev/null | tr -d '"' || true) | ||
| if [ -n "${base_image_digest}" ]; then | ||
| base_image_uniq_id="${ISAACSIM_BASE_IMAGE}:${ISAACSIM_VERSION}:${base_image_digest}" | ||
| else | ||
| echo "🟠 Could not resolve base image digest, falling back to tag string" | ||
| base_image_uniq_id="${ISAACSIM_BASE_IMAGE}:${ISAACSIM_VERSION}" | ||
| fi | ||
|
|
||
| mapfile -t manifest_files < <(git ls-files | grep -E "${deps_manifest_pattern}" || true) | ||
| file_hash=$(git ls-files -s "${deps_files[@]}" "${manifest_files[@]}" 2>/dev/null \ | ||
| | sha256sum | cut -c1-16) | ||
| deps_hash=$(printf '%s %s %s' "${file_hash}" "${base_image_uniq_id}" "${TARGET_PLATFORM}" \ | ||
| | sha256sum | cut -c1-16) | ||
|
|
||
| echo "🔵 Deps hash: ${deps_hash}" | ||
| echo "hash=${deps_hash}" >> "$GITHUB_OUTPUT" |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| # Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md). | ||
| # All rights reserved. | ||
| # | ||
| # SPDX-License-Identifier: BSD-3-Clause | ||
|
|
||
| name: 'Setup docker config' | ||
| description: > | ||
| Point DOCKER_CONFIG at a temp config with the credential helper disabled and | ||
| log into nvcr.io. Shared by the docker-build and ecr-build-push-pull actions. | ||
| Idempotent: re-invoking it in the same job is a no-op, so callers (e.g. | ||
| ecr-build-push-pull delegating to docker-build) don't need to coordinate. | ||
| Reads NGC_API_KEY from the environment (optional; warns when missing). | ||
|
|
||
| runs: | ||
| using: composite | ||
| steps: | ||
| - shell: bash | ||
| run: | | ||
| # The runner's credential helper backend is broken ("not implemented") | ||
| # and causes docker login calls to fail unless we point DOCKER_CONFIG at | ||
| # a temp config with credsStore disabled. The value is written to | ||
| # $GITHUB_ENV so subsequent steps in the job inherit it; a second | ||
| # invocation sees it already set and short-circuits. | ||
| if [ -n "${DOCKER_CONFIG:-}" ] && [ -f "${DOCKER_CONFIG}/config.json" ]; then | ||
| echo "🟢 Docker config already set up at ${DOCKER_CONFIG}, skipping" | ||
| exit 0 | ||
| fi | ||
|
|
||
| DOCKER_CONFIG_DIR=$(mktemp -d) | ||
| if [ -f "${HOME}/.docker/config.json" ]; then | ||
| python3 -c "import json; cfg=json.load(open('${HOME}/.docker/config.json')); cfg['credsStore']=''; cfg.pop('credHelpers',None); json.dump(cfg,open('${DOCKER_CONFIG_DIR}/config.json','w'))" | ||
| else | ||
| echo '{"credsStore":""}' > "${DOCKER_CONFIG_DIR}/config.json" | ||
| fi | ||
| export DOCKER_CONFIG="${DOCKER_CONFIG_DIR}" | ||
| echo "DOCKER_CONFIG=${DOCKER_CONFIG_DIR}" >> "$GITHUB_ENV" | ||
|
|
||
| if [ -n "${NGC_API_KEY:-}" ]; then | ||
| echo "🔵 Logging into nvcr.io..." | ||
| docker login -u '$oauthtoken' -p "${NGC_API_KEY}" nvcr.io | ||
| else | ||
| echo "🟠 NGC_API_KEY not set - skipping nvcr.io login (normal for fork PRs)" | ||
| fi |
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
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
does this guarantee that it will always use the latest isaac lab code? the agent picked up a concerning behavior that I'm not too sure if it's true or not
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
image is deduped w.r.t dependency hash. source code is always mounted.