Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
8428c65f
"components/vscode:/vscode.git/clone" did not exist on "539c18cd60c00a3851f46dac2da327a60afcb036"
Unverified
Commit
8428c65f
authored
Apr 17, 2026
by
Saravana Periyasamy
Committed by
GitHub
Apr 17, 2026
Browse files
refactor(ci): switch sccache auth to IRSA web identity (#8324)
parent
90ccc92c
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
37 additions
and
62 deletions
+37
-62
.github/actions/build-flavor/action.yml
.github/actions/build-flavor/action.yml
+0
-10
.github/actions/docker-build/action.yml
.github/actions/docker-build/action.yml
+0
-8
.github/actions/docker-remote-build/action.yml
.github/actions/docker-remote-build/action.yml
+12
-16
.github/workflows/build-flavor.yml
.github/workflows/build-flavor.yml
+0
-2
.github/workflows/build-frontend-image.yaml
.github/workflows/build-frontend-image.yaml
+0
-2
.github/workflows/build-test-distribute-flavor.yml
.github/workflows/build-test-distribute-flavor.yml
+0
-2
.github/workflows/container-validation-dynamo.yml
.github/workflows/container-validation-dynamo.yml
+0
-2
.github/workflows/shared-build-image.yml
.github/workflows/shared-build-image.yml
+0
-2
container/templates/wheel_builder.Dockerfile
container/templates/wheel_builder.Dockerfile
+25
-18
No files found.
.github/actions/build-flavor/action.yml
View file @
8428c65f
...
...
@@ -44,14 +44,6 @@ inputs:
description
:
'
SCCache
S3
Bucket'
required
:
false
default
:
'
'
aws_access_key_id
:
description
:
'
AWS
Access
Key
ID'
required
:
false
default
:
'
'
aws_secret_access_key
:
description
:
'
AWS
Secret
Access
Key'
required
:
false
default
:
'
'
hf_token
:
description
:
'
HuggingFace
token'
required
:
false
...
...
@@ -239,8 +231,6 @@ runs:
aws_default_region
:
${{ inputs.aws_default_region }}
sccache_s3_bucket
:
${{ inputs.sccache_s3_bucket }}
aws_account_id
:
${{ inputs.aws_account_id }}
aws_access_key_id
:
${{ inputs.aws_access_key_id }}
aws_secret_access_key
:
${{ inputs.aws_secret_access_key }}
no_cache
:
${{ inputs.no_cache }}
extra_tags
:
${{ steps.extra-tags.outputs.tags }}
push_image
:
${{ inputs.push_image }}
...
...
.github/actions/docker-build/action.yml
View file @
8428c65f
...
...
@@ -34,12 +34,6 @@ inputs:
aws_account_id
:
description
:
'
AWS
Account
ID'
required
:
false
aws_access_key_id
:
description
:
'
AWS
Access
Key
ID'
required
:
false
aws_secret_access_key
:
description
:
'
AWS
Secret
Access
Key'
required
:
false
outputs
:
image_tag
:
...
...
@@ -106,8 +100,6 @@ runs:
GITHUB_TOKEN
:
${{ inputs.ci_token }}
AWS_DEFAULT_REGION
:
${{ inputs.aws_default_region }}
SCCACHE_S3_BUCKET
:
${{ inputs.sccache_s3_bucket }}
AWS_ACCESS_KEY_ID
:
${{ inputs.aws_access_key_id }}
AWS_SECRET_ACCESS_KEY
:
${{ inputs.aws_secret_access_key }}
PLATFORM
:
${{ inputs.platform }}
ECR_HOSTNAME
:
${{ inputs.aws_account_id }}.dkr.ecr.${{ inputs.aws_default_region }}.amazonaws.com
GITHUB_RUN_ID
:
${{ github.run_id }}
...
...
.github/actions/docker-remote-build/action.yml
View file @
8428c65f
...
...
@@ -28,12 +28,6 @@ inputs:
aws_account_id
:
description
:
'
AWS
Account
ID'
required
:
false
aws_access_key_id
:
description
:
'
AWS
Access
Key
ID'
required
:
false
aws_secret_access_key
:
description
:
'
AWS
Secret
Access
Key'
required
:
false
no_cache
:
description
:
'
Disable
Docker
build
cache'
required
:
false
...
...
@@ -71,8 +65,6 @@ runs:
env
:
AWS_DEFAULT_REGION
:
${{ inputs.aws_default_region }}
SCCACHE_S3_BUCKET
:
${{ inputs.sccache_s3_bucket }}
AWS_ACCESS_KEY_ID
:
${{ inputs.aws_access_key_id }}
AWS_SECRET_ACCESS_KEY
:
${{ inputs.aws_secret_access_key }}
PLATFORM
:
${{ inputs.platform }}
ECR_HOSTNAME
:
${{ inputs.aws_account_id }}.dkr.ecr.${{ inputs.aws_default_region }}.amazonaws.com
GITHUB_RUN_ID
:
${{ github.run_id }}
...
...
@@ -162,16 +154,20 @@ runs:
done <<< "$EXTRA_BUILD_ARGS"
fi
# Pass
AWS credentials
as build secrets for sccache S3 access.
#
Dockerfile steps reference these via --mount=type=secret,id=aws-key-id,env=...
#
Disable tracing to prevent set -x from leaking credentials into logs.
set +x
# Pass
IRSA web identity token
as build secrets for sccache S3 access.
#
The runner pod has IRSA which provides AWS_WEB_IDENTITY_TOKEN_FILE and
#
AWS_ROLE_ARN. We pass the token file and role ARN to BuildKit so sccache
# can authenticate via STS AssumeRoleWithWebIdentity -- no static keys needed.
SECRET_ARGS=""
if [ "${{ inputs.use_sccache }}" == "true" ] && [ -n "${AWS_ACCESS_KEY_ID:-}" ]; then
SECRET_ARGS+=" --secret id=aws-key-id,env=AWS_ACCESS_KEY_ID"
SECRET_ARGS+=" --secret id=aws-secret-id,env=AWS_SECRET_ACCESS_KEY"
if [ "${{ inputs.use_sccache }}" == "true" ]; then
TOKEN_FILE="${AWS_WEB_IDENTITY_TOKEN_FILE:-}"
if [ -n "$TOKEN_FILE" ] && [ -f "$TOKEN_FILE" ] && [ -n "${AWS_ROLE_ARN:-}" ]; then
SECRET_ARGS+=" --secret id=aws-web-identity-token,src=${TOKEN_FILE}"
SECRET_ARGS+=" --secret id=aws-role-arn,env=AWS_ROLE_ARN"
else
echo "::warning::IRSA web identity token not available; sccache S3 cache will be disabled"
fi
fi
set -x
docker buildx build \
--progress=plain \
...
...
.github/workflows/build-flavor.yml
View file @
8428c65f
...
...
@@ -116,8 +116,6 @@ jobs:
azure_acr_user
:
${{ secrets.AZURE_ACR_USER }}
azure_acr_password
:
${{ secrets.AZURE_ACR_PASSWORD }}
sccache_s3_bucket
:
${{ secrets.SCCACHE_S3_BUCKET }}
aws_access_key_id
:
${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key
:
${{ secrets.AWS_SECRET_ACCESS_KEY }}
hf_token
:
${{ secrets.HF_TOKEN }}
build_timeout_minutes
:
${{ inputs.build_timeout_minutes }}
push_image
:
${{ inputs.push_image }}
...
...
.github/workflows/build-frontend-image.yaml
View file @
8428c65f
...
...
@@ -170,8 +170,6 @@ jobs:
aws_default_region
:
${{ secrets.AWS_DEFAULT_REGION }}
sccache_s3_bucket
:
${{ secrets.SCCACHE_S3_BUCKET }}
aws_account_id
:
${{ secrets.AWS_ACCOUNT_ID }}
aws_access_key_id
:
${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key
:
${{ secrets.AWS_SECRET_ACCESS_KEY }}
push_image
:
true
extra_build_args
:
|
EPP_IMAGE=${{ steps.calculate-target-tag.outputs.epp_image_uri }}
...
...
.github/workflows/build-test-distribute-flavor.yml
View file @
8428c65f
...
...
@@ -219,8 +219,6 @@ jobs:
azure_acr_user
:
${{ secrets.AZURE_ACR_USER }}
azure_acr_password
:
${{ secrets.AZURE_ACR_PASSWORD }}
sccache_s3_bucket
:
${{ secrets.SCCACHE_S3_BUCKET }}
aws_access_key_id
:
${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key
:
${{ secrets.AWS_SECRET_ACCESS_KEY }}
hf_token
:
${{ secrets.HF_TOKEN }}
build_timeout_minutes
:
${{ inputs.build_timeout_minutes }}
push_image
:
${{ inputs.push_image }}
...
...
.github/workflows/container-validation-dynamo.yml
View file @
8428c65f
...
...
@@ -128,8 +128,6 @@ jobs:
aws_default_region
:
${{ secrets.AWS_DEFAULT_REGION }}
aws_account_id
:
${{ secrets.AWS_ACCOUNT_ID }}
sccache_s3_bucket
:
${{ secrets.SCCACHE_S3_BUCKET }}
aws_access_key_id
:
${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key
:
${{ secrets.AWS_SECRET_ACCESS_KEY }}
push_image
:
'
true'
-
name
:
Build and Push Test Image
env
:
...
...
.github/workflows/shared-build-image.yml
View file @
8428c65f
...
...
@@ -241,8 +241,6 @@ jobs:
aws_default_region
:
${{ secrets.AWS_DEFAULT_REGION }}
sccache_s3_bucket
:
${{ secrets.SCCACHE_S3_BUCKET }}
aws_account_id
:
${{ secrets.AWS_ACCOUNT_ID }}
aws_access_key_id
:
${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key
:
${{ secrets.AWS_SECRET_ACCESS_KEY }}
no_cache
:
${{ inputs.no_cache }}
extra_tags
:
${{ steps.extra-tags.outputs.tags }}
push_image
:
${{ inputs.push_image }}
...
...
container/templates/wheel_builder.Dockerfile
View file @
8428c65f
...
...
@@ -255,8 +255,9 @@ ENV SCCACHE_BUCKET=${USE_SCCACHE:+${SCCACHE_BUCKET}} \
# Always build FFmpeg so libs are available for Rust checks in CI
# Do not delete the source tarball for legal reasons
ARG
FFMPEG_VERSION
RUN
--mount
=
type
=
secret,id
=
aws-key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-role-arn,env
=
AWS_ROLE_ARN
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
eval
$(
/tmp/use-sccache.sh setup-env
)
;
\
...
...
@@ -292,13 +293,13 @@ RUN --mount=type=secret,id=aws-key-id,env=AWS_ACCESS_KEY_ID \
/tmp/use-sccache.sh show-stats
"FFMPEG"
&&
\
ldconfig
&&
\
mkdir
-p
/usr/local/src/ffmpeg
&&
\
# Remove build artifacts (config.log, etc.) before preserving the source.
find /tmp/ffmpeg-${FFMPEG_VERSION} -name config.log -delete && \
find /tmp/ffmpeg-
${
FFMPEG_VERSION
}
\(
-name
config.log
-o
-name
config.status
\)
-delete
&&
\
mv
/tmp/ffmpeg-
${
FFMPEG_VERSION
}*
/usr/local/src/ffmpeg/
# Build and install UCX
RUN
--mount
=
type
=
secret,id
=
aws-key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-role-arn,env
=
AWS_ROLE_ARN
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
"
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
"
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
eval
$(
/tmp/use-sccache.sh setup-env
)
;
\
...
...
@@ -363,8 +364,9 @@ RUN --mount=type=secret,id=aws-key-id,env=AWS_ACCESS_KEY_ID \
{% if device == "cuda" %}
ARG
NIXL_LIBFABRIC_REF
RUN
--mount
=
type
=
secret,id
=
aws-key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-role-arn,env
=
AWS_ROLE_ARN
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
"
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
"
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
eval
$(
/tmp/use-sccache.sh setup-env
)
;
\
...
...
@@ -395,8 +397,9 @@ RUN --mount=type=secret,id=aws-key-id,env=AWS_ACCESS_KEY_ID \
{% if framework == "vllm" and device == "cuda" %}
# Build and install AWS SDK C++ (required for NIXL OBJ backend / S3 support)
ARG
AWS_SDK_CPP_VERSION=1.11.760
RUN
--mount
=
type
=
secret,id
=
aws-key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-role-arn,env
=
AWS_ROLE_ARN
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
"
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
"
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
eval
$(
/tmp/use-sccache.sh setup-env cmake
)
;
\
...
...
@@ -437,11 +440,12 @@ COPY components/ /opt/dynamo/components/
# Build ai-dynamo (pure Python) and ai-dynamo-runtime (maturin) wheels
ARG
USE_SCCACHE
ARG
ENABLE_MEDIA_FFMPEG
RUN
--mount
=
type
=
secret,id
=
aws-
key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-
secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-
web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-
role-arn,env
=
AWS_ROLE_ARN
\
--mount
=
type
=
cache,target
=
/root/.cargo/registry
\
--mount
=
type
=
cache,target
=
/root/.cargo/git
\
--mount
=
type
=
cache,target
=
/root/.cache/uv
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
UV_CACHE_DIR
=
/root/.cache/uv
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
...
...
@@ -505,8 +509,9 @@ ARG USE_SCCACHE
ARG
CUDA_MAJOR
{% endif %}
RUN
--mount
=
type
=
secret,id
=
aws-key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-role-arn,env
=
AWS_ROLE_ARN
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
"
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
"
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
eval
$(
/tmp/use-sccache.sh setup-env
)
;
\
...
...
@@ -563,9 +568,10 @@ RUN echo "$NIXL_LIB_DIR" > /etc/ld.so.conf.d/nixl.conf && \
# Build NIXL wheel → /opt/dynamo/dist/nixl/nixl*.whl (C++ transport library, all targets)
ARG
PYTHON_VERSION
RUN
--mount
=
type
=
secret,id
=
aws-
key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-
secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-
web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-
role-arn,env
=
AWS_ROLE_ARN
\
--mount
=
type
=
cache,target
=
/root/.cache/uv
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
UV_CACHE_DIR
=
/root/.cache/uv
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
"
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
"
&&
\
if
[
"
$USE_SCCACHE
"
=
"true"
]
;
then
\
...
...
@@ -583,11 +589,12 @@ COPY components/ /opt/dynamo/components/
# Build kvbm wheel (with nixl linkage via auditwheel repair)
ARG
ENABLE_KVBM
RUN
--mount
=
type
=
secret,id
=
aws-
key-id,env
=
AWS_ACCESS_KEY_ID
\
--mount
=
type
=
secret,id
=
aws-
secret-id,env
=
AWS_SECRET_ACCESS_KEY
\
RUN
--mount
=
type
=
secret,id
=
aws-
web-identity-token,target
=
/run/secrets/aws-token
\
--mount
=
type
=
secret,id
=
aws-
role-arn,env
=
AWS_ROLE_ARN
\
--mount
=
type
=
cache,target
=
/root/.cargo/registry
\
--mount
=
type
=
cache,target
=
/root/.cargo/git
\
--mount
=
type
=
cache,target
=
/root/.cache/uv
\
export
AWS_WEB_IDENTITY_TOKEN_FILE
=
/run/secrets/aws-token
&&
\
export
UV_CACHE_DIR
=
/root/.cache/uv
&&
\
export
SCCACHE_S3_KEY_PREFIX
=
${
SCCACHE_S3_KEY_PREFIX
:-${
TARGETARCH
}}
&&
\
ARCH_ALT
=
$(
[
"
${
TARGETARCH
}
"
=
"amd64"
]
&&
echo
"x86_64"
||
echo
"aarch64"
)
&&
\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment