Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
b4e7829
chore(helm): disable etcd PDB by default (#4602)
c-fteixeira Dec 3, 2025
d5a75dd
docs: update TensorRT-LLM commit for multimodal EPD to v1.2.0rc3 (#4713)
dagil-nvidia Dec 3, 2025
66f319a
ci: publish docs automatically (#3263)
nealvaidya Dec 3, 2025
d90dc39
feat: add Kserve readiness endpoint support: ServerLive / ServerReady…
GuanLuo Dec 3, 2025
991d8c7
fix: Updates CUDA fatbin for KVBM (#4700)
oandreeva-nv Dec 3, 2025
c5e8c4c
chore: Arc wrap prometheus_registry in MetricsRegistry (#4677)
PeaBrane Dec 3, 2025
60feb95
chore: bump vLLM to 0.11.2 (#4476)
karen-sy Dec 3, 2025
96f8008
fix: remove printing metadata json (#4737)
nv-nmailhot Dec 3, 2025
732c1ed
feat: add more metrics in planner (#4710)
tedzhouhk Dec 3, 2025
ea93cb5
chore: update deploy code owner for backend k8s examples (#4743)
biswapanda Dec 3, 2025
1f3e97a
chore: Update sgl version (#4716)
jthomson04 Dec 3, 2025
845a06b
fix: copy wheel meta files in vllm dev stage for editable install (#4…
nv-anants Dec 3, 2025
be67f67
feat: add lora k8s deployment example (#4714)
biswapanda Dec 4, 2025
0651a4f
test: Multimodal Tool Calling vLLM Test (#4663)
indrajit96 Dec 4, 2025
5b24b42
chore: no need to arc wrap client (#4741)
PeaBrane Dec 4, 2025
c099252
feat: Add GPU discovery utilities (#4695)
tzulingk Dec 4, 2025
d7c11b6
chore: bump vLLM to 0.12.0 (#4736)
karen-sy Dec 4, 2025
37d0fc8
fix: Use /proc/driver/nvidia/gpus to get PCI addresses (#4717)
tzulingk Dec 4, 2025
d580031
feat: Turn on canary health check by default (#4368)
tzulingk Dec 4, 2025
67273ab
test: reenable router + vllm tests (#4746)
PeaBrane Dec 4, 2025
8601ccd
fix: parallel tool call indices in streaming (#4723)
vladnosiv Dec 4, 2025
173201f
fix: vLLM xfer bug (#4745)
alec-flowers Dec 4, 2025
00b64ae
refactor: remove legacy NATS metrics and stats_handler (#4680)
keivenchang Dec 4, 2025
118323f
fix: skip HuggingFace download for non-llms (#4686)
nealvaidya Dec 4, 2025
5942ef8
ci: auto-publish docs with correct version number (#4740)
nealvaidya Dec 4, 2025
a689c4b
test: Extend Migration Tests to TRT-LLM (#4709)
kthui Dec 4, 2025
b8c4a5f
test: Extend Migration Tests to SGLang (#4711)
kthui Dec 4, 2025
76f4bc8
build: Enable frontend decoding (media-nixl) in regular dynamo builds…
KrishnanPrash Dec 5, 2025
3bc129d
feat: Add python-configurable engine routes for sglang profiling (#4617)
Aphoh Dec 5, 2025
501ef02
fix: use channel to avoid race condition from async nats registration…
biswapanda Dec 5, 2025
0fa9b99
test: Include a timeout marker to all Cancellation / Migration E2E te…
kthui Dec 5, 2025
21f6d1e
fix: add missed dependency for sglang tracing (#4621)
vladnosiv Dec 5, 2025
3dbab3f
fix(sglang): fix IPv6 support for ZMQ endpoint (#4403)
dmitrygx Dec 5, 2025
df28d3f
mdc registration for enable localkvindexer + related workerqueryclien…
karen-sy Dec 5, 2025
f315374
docs: Guide for Speculative Decoding in VLLM using Eagle3 and Meta-Ll…
Dilu-Bilu Dec 5, 2025
54c2efb
nit
karen-sy Dec 5, 2025
d03c097
ci: automatically update version picker when new version published (#…
nealvaidya Dec 5, 2025
a9078ed
ci: Adding nightly pipeline workflow (#4204)
pvijayakrish Dec 5, 2025
0dad7c5
merge main
karen-sy Dec 5, 2025
37fee4b
up
karen-sy Dec 5, 2025
43ebf91
oops didnt include args.py diff
karen-sy Dec 5, 2025
2472aa4
test: add timeout markers to pytest.mark.gpu_1 serve tests (#4768)
keivenchang Dec 6, 2025
d66e675
fix: Extra requests received by workers during FT tests (#4780)
kthui Dec 6, 2025
5588d77
test: add timeout for lora utils tests (#4781)
biswapanda Dec 6, 2025
046229f
fix: restoring KVBM wheel generation for `framework=none` and adding …
oandreeva-nv Dec 6, 2025
1645884
ci: fix login for operator job and other sgl/trtllm tests (#4785)
dillon-cullinan Dec 8, 2025
204d10d
fix: change pytest result artifact upload name to include job id and …
nv-nmailhot Dec 8, 2025
8b19740
fix: move new launch script to examples (#4800)
nv-anants Dec 8, 2025
300e5d5
fix: increase timeout for test_{sglang,vllm,trtllm} model download ti…
keivenchang Dec 8, 2025
d2c23e4
feat(fault-injection): Enable runtime CUDA fault injection toggling w…
nv-oviya Dec 8, 2025
c9fad85
chore: jamba based parsers (#4776)
ayushag-nv Dec 8, 2025
d13c017
fix: remove workflow metric job (#4806)
nv-nmailhot Dec 8, 2025
3bad966
feat: update examples to use public lora (#4807)
biswapanda Dec 8, 2025
8f0ac73
feat: add runtime sanity checks for runtime images (#4788)
keivenchang Dec 8, 2025
377711d
chore: de-spaghetti mocker scheduler (#4789)
PeaBrane Dec 8, 2025
3fea2e1
test: router + sglang in pre-merge CI (#4767)
PeaBrane Dec 8, 2025
80dfb82
feat: slurm jobs added fp4 and 8k1k (#4747)
ishandhanani Dec 8, 2025
3b60d0f
nit
karen-sy Dec 8, 2025
0dd5169
refactor: update Dockerfiles to use group writes for development, sav…
keivenchang Dec 8, 2025
197e022
feat: migrate planner metrics to backend (1/3 vLLM) (#4134)
daiyaanarfeen Dec 9, 2025
3e4b480
fix: guided decoding params handling in vLLM (#4770)
vladnosiv Dec 9, 2025
bd4366d
fix: Fix warning messages with healthcheck (#4793)
jthomson04 Dec 9, 2025
e6de33f
fix: have frontend populate "stop" field in OpenAI request (#4782)
furionw Dec 9, 2025
4ca1679
test: Pre-download models before tests are ran (#4811)
kthui Dec 9, 2025
1e37c10
fix: add timeout to tests before lora to unblock (#4808)
keivenchang Dec 9, 2025
1f9b69b
feat: Change health check log level from info to debug (#4818)
tzulingk Dec 9, 2025
09f2314
feat: add scaling adapter (#4699)
julienmancuso Dec 9, 2025
94d145a
docs: Add multimodal documentation vllm, sglang, and trtllm backends …
indrajit96 Dec 9, 2025
5585f80
feat: add tool_choice support (#4722)
vladnosiv Dec 9, 2025
a473402
feat: fault tolerance rolling upgrade test scenarios (#4558)
tmonty12 Dec 9, 2025
7c15166
feat: Disable health checks by default; auto-enable in K8s via operat…
tzulingk Dec 9, 2025
d5f425a
chore(pipeline): Move migration outside of backend (#4823)
grahamking Dec 9, 2025
ad5afb7
fix: Add model registration to SGLang multimodal workers fixing bu…
nancya-nv Dec 9, 2025
4b00804
quick checkpoint before switching branches
karen-sy Dec 9, 2025
8559c2b
feat: KV aware LoRA request routing for vllm (#4810)
biswapanda Dec 9, 2025
fc16192
feat: unified tracing across dynamo + sglang (#4248)
ishandhanani Dec 9, 2025
065f466
fix: backend error serialization and add HTTP status code detection (…
tzulingk Dec 9, 2025
14321c8
feat: add a grafana dashboard for planner (#4815)
tedzhouhk Dec 9, 2025
1e5b20b
chore: cleanups of passing around prefill and decode worker ids (#4829)
PeaBrane Dec 9, 2025
01bfbea
feat: Add logprobs support to TRTLLM backend (#4759)
esoba Dec 9, 2025
9573d34
feat: make planner use DGD Scaling Adapters (#4825)
julienmancuso Dec 9, 2025
0ce7280
chore: fix cache flush template (#4809)
nealvaidya Dec 9, 2025
96fe63f
feat: nixl_connect: Improve Concurrency Support (#4433)
whoisj Dec 9, 2025
c9e445a
ci: OPS-2136: Setup caching for docker build (#4535)
dillon-cullinan Dec 10, 2025
6d091bf
feat: DeepSeek V3.2 tool calling support (#4822)
vladnosiv Dec 10, 2025
f57fd72
feat: Add logprobs support to vLLM backend (#4683) (#4697)
AryanBagade Dec 10, 2025
01819b8
feat: KVBM V2 optimized bounce buffer transfer + benchmark (#3947)
jthomson04 Dec 10, 2025
fe10dbf
feat: vLLM pre/postprocessing in-framework (#4529)
jthomson04 Dec 10, 2025
c7ad78f
feat: non blocking radix snapshot upload (#4839)
PeaBrane Dec 10, 2025
cc2ee1e
fix: sccache compiler launcher errors when sccache is disabled (#4846)
keivenchang Dec 10, 2025
cf269db
ci: re enable sgl unit tests and remove pyproject.toml from runtime i…
nv-anants Dec 10, 2025
0a517dc
fix: remove pod normalization logic (#4853)
julienmancuso Dec 10, 2025
acab636
test: add ci tests for lora (agg and router) (#4817)
biswapanda Dec 10, 2025
0173d5e
fix: Fix multimodal EPD examples for vllm version bump (#4849)
krishung5 Dec 10, 2025
ca0cd3b
feat: add webUI to profiler (#4544)
tedzhouhk Dec 10, 2025
cb7568c
ranged workerevent query
karen-sy Dec 10, 2025
a409b29
ci: Disable sccache until its successfully resolved (#4869)
dillon-cullinan Dec 10, 2025
664b458
fix: Don't set min_tokens when ignore_eos is true (#4872)
jthomson04 Dec 10, 2025
ac8d36c
test: router + trtllm CI tests (#4805)
karen-sy Dec 11, 2025
69817c2
chore: add gb200 fp4 8k1k (#4874)
ishandhanani Dec 11, 2025
c8845b4
fix: worker to graceful shutdown after finishing in-flight requests (…
tedzhouhk Dec 11, 2025
00f8615
test: Ensure Request Cancellation, Migration, Rejection Work with TCP…
kthui Dec 11, 2025
5250303
chore: TRTLLM 1.2.0rc4 (#4836)
dmitry-tokarev-nv Dec 11, 2025
2845aa1
feat: include ttft and total request time in nvext (engine-agnostic) …
PeaBrane Dec 11, 2025
f8bb53c
feat: add cached tokens prometheus metric (#4534)
vladnosiv Dec 11, 2025
111e08c
refactor: simplify, remove --dev-image option from build.sh (#4867)
keivenchang Dec 11, 2025
c6b440e
test: add dynamic port allocation for fault_tolerant test execution (…
keivenchang Dec 11, 2025
9b7152d
fix: Fix CUDA_VISIBLE_DEVICES for agg_multimodal_epd.sh (#4888)
krishung5 Dec 11, 2025
242a4d5
ci: Fixing sccache behavior (#4866)
dillon-cullinan Dec 11, 2025
3c2b72b
fix: [lora] refactor test and clean up examples (#4884)
biswapanda Dec 11, 2025
c76c74a
recovery for startup and gaps
karen-sy Dec 11, 2025
5e96c9a
test: graceful shutdown for tcp req plane (#4883)
biswapanda Dec 11, 2025
31f31e8
fix: remove small --gpu-memory-utilization to avoid OOM due to vllm u…
ziqifan617 Dec 11, 2025
5c2415d
docs: update docs to remove KVBM cuda graph limitation (#4902)
nv-kmcgill53 Dec 11, 2025
2ef0f5f
fix: relax pydantic requirements (#4865)
dmitry-tokarev-nv Dec 11, 2025
6a5b2dd
Merge remote-tracking branch 'origin/main' into karenc/mdc_from_frontend
karen-sy Dec 11, 2025
69135ad
add back integration guard
karen-sy Dec 11, 2025
f2be88e
clippy
karen-sy Dec 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
96 changes: 56 additions & 40 deletions .github/actions/docker-build/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ inputs:
image_tag:
description: 'Custom image tag (optional, defaults to framework:latest)'
required: false
ngc_ci_access_token:
description: 'NGC CI Access Token'
required: false
ci_token:
description: 'CI Token'
required: false
Expand Down Expand Up @@ -49,6 +46,12 @@ inputs:
torch_backend:
description: 'Optional override for TORCH_BACKEND build-arg (e.g., cu129)'
required: false
enable_kvbm:
description: 'Enable KVBM support (optional)'
required: false
dynamo_base_image:
description: 'Pre-built Dynamo base image to use instead of building from scratch'
required: false

outputs:
image_tag:
Expand All @@ -61,20 +64,9 @@ runs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 #v3.11.1
with:
driver: docker
driver: docker-container
# Enable BuildKit for enhanced metadata
buildkitd-flags: --debug
- name: Login to ECR
shell: bash
env:
ECR_HOSTNAME: ${{ inputs.aws_account_id }}.dkr.ecr.${{ inputs.aws_default_region }}.amazonaws.com
run: |
aws ecr get-login-password --region ${{ inputs.aws_default_region }} | docker login --username AWS --password-stdin ${ECR_HOSTNAME}
- name: Login to NGC
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push'
shell: bash
run: |
echo "${{ inputs.ngc_ci_access_token }}" | docker login nvcr.io -u '$oauthtoken' --password-stdin
- name: Cleanup
if: always()
shell: bash
Expand All @@ -90,9 +82,12 @@ runs:
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_JOB: ${{ github.job }}
GITHUB_REF_NAME: ${{ github.ref_name }}
run: |
set -x
# Determine image tag
if [ -n "${{ inputs.image_tag }}" ]; then
IMAGE_TAG="${{ inputs.image_tag }}"
Expand All @@ -112,18 +107,34 @@ runs:
echo "📝 Build log will be saved to: ${BUILD_LOG_FILE}"

# Collect optional overrides provided by the workflow
# Set base cache args and set --cache-to if this is a main commit
EXTRA_ARGS=""
EXTRA_ARGS="--cache-to type=inline "
EXTRA_ARGS+="--cache-from type=registry,ref=${ECR_HOSTNAME}/ai-dynamo/dynamo:${{ inputs.framework }}-${PLATFORM##*/}-cache "
EXTRA_ARGS+="--cache-from type=registry,ref=${ECR_HOSTNAME}/ai-dynamo/dynamo:main-${{ inputs.framework }}-${PLATFORM##*/} "
if [[ "$GITHUB_REF_NAME" == "main" ]]; then
EXTRA_ARGS+="--cache-to type=registry,ref=${ECR_HOSTNAME}/ai-dynamo/dynamo:${{ inputs.framework }}-${PLATFORM##*/}-cache,mode=max "
fi

echo "$EXTRA_ARGS"
# Collect optional overrides provided by the workflow
if [ -n "${{ inputs.base_image_tag }}" ]; then
EXTRA_ARGS+=" --base-image-tag ${{ inputs.base_image_tag }}"
EXTRA_ARGS+="--base-image-tag ${{ inputs.base_image_tag }} "
fi
if [ -n "${{ inputs.runtime_image_tag }}" ]; then
EXTRA_ARGS+=" --build-arg RUNTIME_IMAGE_TAG=${{ inputs.runtime_image_tag }}"
EXTRA_ARGS+="--build-arg RUNTIME_IMAGE_TAG=${{ inputs.runtime_image_tag }} "
fi
if [ -n "${{ inputs.cuda_version }}" ]; then
EXTRA_ARGS+=" --build-arg CUDA_VERSION=${{ inputs.cuda_version }}"
EXTRA_ARGS+="--build-arg CUDA_VERSION=${{ inputs.cuda_version }} "
fi
if [ -n "${{ inputs.torch_backend }}" ]; then
EXTRA_ARGS+=" --build-arg TORCH_BACKEND=${{ inputs.torch_backend }}"
EXTRA_ARGS+="--build-arg TORCH_BACKEND=${{ inputs.torch_backend }} "
fi
if [ -n "${{ inputs.dynamo_base_image }}" ]; then
EXTRA_ARGS+=" --dynamo-base-image ${{ inputs.dynamo_base_image }}"
fi
if [ -n "${{ inputs.enable_kvbm }}" ]; then
EXTRA_ARGS+=" --build-arg ENABLE_KVBM=${{ inputs.enable_kvbm }}"
fi

# Execute build and capture output (show on console AND save to file)
Expand All @@ -144,6 +155,26 @@ runs:
# Exit with the build's exit code
exit ${BUILD_EXIT_CODE}

- name: Run Sanity Check on Runtime Image
if: inputs.target == 'runtime'
shell: bash
run: |
IMAGE_TAG="${{ steps.build.outputs.image_tag }}"
echo "Running sanity check on image: $IMAGE_TAG"

# Run the sanity check script inside the container
# The script is located in /workspace/deploy/sanity_check.py in runtime containers
set +e
docker run --rm "$IMAGE_TAG" python /workspace/deploy/sanity_check.py --runtime-check --no-gpu-check
SANITY_CHECK_EXIT_CODE=$?
set -e
if [ ${SANITY_CHECK_EXIT_CODE} -ne 0 ]; then
echo "ERROR: Sanity check failed - ai-dynamo packages not properly installed"
exit ${SANITY_CHECK_EXIT_CODE}
else
echo "✅ Sanity check passed"
fi

- name: Capture Build Metrics
id: metrics
shell: bash
Expand Down Expand Up @@ -223,8 +254,7 @@ runs:
chmod +x .github/scripts/parse_buildkit_output.py

# Check for build logs and build stage arguments dynamically
BASE_BUILD_LOG="build-logs/base-image-build.log"
FRAMEWORK_BUILD_LOG="build-logs/framework-${FRAMEWORK_LOWER}-build.log"
BUILD_LOG="build-logs/single-stage-build.log"

# Path to container metadata created in previous step
CONTAINER_METADATA="build-metrics/metrics-${{ inputs.framework }}-${PLATFORM_ARCH}-${WORKFLOW_ID}-${JOB_ID}.json"
Expand All @@ -237,18 +267,11 @@ runs:
# Build stage arguments dynamically based on which logs exist
STAGE_ARGS=()

if [ -f "$BASE_BUILD_LOG" ]; then
echo " ✓ Found base image log: ${BASE_BUILD_LOG}"
STAGE_ARGS+=("base:${BASE_BUILD_LOG}")
else
echo " ℹ️ No base image log found"
fi

if [ -f "$FRAMEWORK_BUILD_LOG" ]; then
echo " ✓ Found framework log: ${FRAMEWORK_BUILD_LOG}"
STAGE_ARGS+=("runtime:${FRAMEWORK_BUILD_LOG}")
if [ -f "$BUILD_LOG" ]; then
echo " ✓ Found base image log: ${BUILD_LOG}"
STAGE_ARGS+=("runtime:${BUILD_LOG}")
else
echo " ℹ️ No framework log found"
echo " ℹ️ No image log found"
fi

# Check for any additional stage logs (e.g., build-logs/stage3-*.log)
Expand Down Expand Up @@ -280,13 +303,6 @@ runs:
if [ ${PARSER_EXIT_CODE} -eq 0 ] && [ -f "$COMPREHENSIVE_JSON" ]; then
echo "✅ Comprehensive build metrics generated successfully"
echo "📄 Output file: ${COMPREHENSIVE_JSON}"
echo ""
echo "=========================================="
echo "📋 FULL JSON OUTPUT (for debugging)"
echo "=========================================="
cat "$COMPREHENSIVE_JSON"
echo ""
echo "=========================================="
else
echo "⚠️ Metrics generation had issues but continuing..."
fi
Expand All @@ -296,7 +312,7 @@ runs:
uses: actions/upload-artifact@v4
if: always()
with:
name: build-metrics-${{ inputs.framework }}-${{ env.PLATFORM_ARCH }}-${{ github.run_id }}-${{ job.check_run_id }}
name: build-metrics-${{ inputs.framework }}-${{ inputs.target }}-${{ env.PLATFORM_ARCH }}-${{ github.run_id }}-${{ job.check_run_id }}
path: build-metrics/build-${{ inputs.framework }}-${{ env.PLATFORM_ARCH }}-${{ github.run_id }}-${{ job.check_run_id }}.json
retention-days: 7

46 changes: 46 additions & 0 deletions .github/actions/docker-login/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: 'Docker Login'
description: 'Login to multiple container registries (ECR, NGC, ACR)'

inputs:
ngc_ci_access_token:
description: 'NGC CI Access Token'
required: false
aws_default_region:
description: 'AWS Default Region'
required: false
aws_account_id:
description: 'AWS Account ID'
required: false
azure_acr_hostname:
description: 'Azure ACR hostname'
required: false
azure_acr_user:
description: 'Azure ACR user'
required: false
azure_acr_password:
description: 'Azure ACR password'
required: false

runs:
using: "composite"
steps:
- name: ECR Login
shell: bash
if: ${{ inputs.aws_default_region != '' && inputs.aws_account_id != '' }}
env:
ECR_HOSTNAME: ${{ inputs.aws_account_id }}.dkr.ecr.${{ inputs.aws_default_region }}.amazonaws.com
run: |
set -euo pipefail
aws ecr get-login-password --region ${{ inputs.aws_default_region }} | docker login --username AWS --password-stdin "${ECR_HOSTNAME}"
- name: NGC Login
if: ${{ inputs.ngc_ci_access_token != '' }}
shell: bash
run: |
set -euo pipefail
echo "${{ inputs.ngc_ci_access_token }}" | docker login nvcr.io -u '$oauthtoken' --password-stdin
- name: ACR Login
shell: bash
if: ${{ inputs.azure_acr_hostname != '' && inputs.azure_acr_user != '' && inputs.azure_acr_password != '' }}
run: |
set -euo pipefail
echo "${{ inputs.azure_acr_password }}" | docker login "${{ inputs.azure_acr_hostname }}" --username "${{ inputs.azure_acr_user }}" --password-stdin
64 changes: 36 additions & 28 deletions .github/actions/docker-tag-push/action.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
name: 'Docker Tag and Push'
description: 'Tag and Push Docker Images'

inputs:
local_image:
description: 'Local Image Name:Tag'
required: true
push_tag:
description: 'Target Name:Tag'
push_tags:
description: 'Target Name:Tag (newline-separated list for multiple tags)'
required: true
# There isn't a clean way to have an additional tag that is conditional
# Adding this to handle this use-case (we want multiple tags for main builds)
conditional_tag:
description: 'Optional tag for conditionals'
required: false
aws_push:
description: 'Push to AWS Boolean'
required: false
Expand All @@ -21,54 +27,56 @@ inputs:
aws_default_region:
description: 'AWS Default Region'
required: false
aws_access_key_id:
description: 'AWS Access Key ID'
required: false
aws_secret_access_key:
description: 'AWS Secret Access Key'
required: false
azure_acr_hostname:
description: 'Azure ACR hostname'
required: false
azure_acr_user:
description: 'Azure ACR user'
required: false
azure_acr_password:
description: 'Azure ACR password'
required: false

outputs:
image_tag:
description: 'Image Tag'
value: ${{ inputs.push_tag }}
image_tags:
description: 'Image Tags'
value: ${{ inputs.push_tags }}

runs:
using: "composite"
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: ACR Login
shell: bash
if: ${{ inputs.azure_push == 'true' }}
run: |
echo "${{ inputs.azure_acr_password }}" | docker login ${{ inputs.azure_acr_hostname }} --username ${{ inputs.azure_acr_user }} --password-stdin
- name: ECR Tag and Push
shell: bash
if: ${{ inputs.aws_push == 'true' }}
env:
LOCAL_IMAGE: ${{ inputs.local_image }}
PUSH_TAG: ${{ inputs.push_tag }}
PUSH_TAGS: ${{ inputs.push_tags }}
CONDITIONAL_TAG: ${{ inputs.conditional_tag }}
ECR_HOSTNAME: ${{ inputs.aws_account_id }}.dkr.ecr.${{ inputs.aws_default_region }}.amazonaws.com
run: |
docker tag ${LOCAL_IMAGE} ${ECR_HOSTNAME}/${PUSH_TAG}
docker push ${ECR_HOSTNAME}/${PUSH_TAG}
set -euo pipefail
if [[ ${CONDITIONAL_TAG} != '' ]]; then
docker tag ${LOCAL_IMAGE} ${ECR_HOSTNAME}/${CONDITIONAL_TAG}
docker push ${ECR_HOSTNAME}/${CONDITIONAL_TAG}
fi
while IFS= read -r TAG; do
if [ -z "$TAG" ]; then
continue
fi
echo "Tagging and pushing: ${ECR_HOSTNAME}/${TAG}"
docker tag "${LOCAL_IMAGE}" "${ECR_HOSTNAME}/${TAG}"
docker push "${ECR_HOSTNAME}/${TAG}"
done <<< "$PUSH_TAGS"
- name: ACR Tag and Push
shell: bash
if: ${{ inputs.azure_push == 'true' }}
env:
LOCAL_IMAGE: ${{ inputs.local_image }}
PUSH_TAG: ${{ inputs.push_tag }}
PUSH_TAGS: ${{ inputs.push_tags }}
AZURE_ACR_HOSTNAME: ${{ inputs.azure_acr_hostname }}
run: |
docker tag ${LOCAL_IMAGE} ${AZURE_ACR_HOSTNAME}/${PUSH_TAG}
docker push ${AZURE_ACR_HOSTNAME}/${PUSH_TAG}
set -euo pipefail
while IFS= read -r TAG; do
if [ -z "$TAG" ]; then
continue
fi
echo "Tagging and pushing: ${AZURE_ACR_HOSTNAME}/${TAG}"
docker tag "${LOCAL_IMAGE}" "${AZURE_ACR_HOSTNAME}/${TAG}"
docker push "${AZURE_ACR_HOSTNAME}/${TAG}"
done <<< "$PUSH_TAGS"
Loading
Loading