Skip to content

Commit 71b6619

Browse files
committed
Add job to build and upload docker image to pypi_release workflow
1 parent 05c5083 commit 71b6619

2 files changed

Lines changed: 63 additions & 15 deletions

File tree

.github/workflows/build_and_push_docker_image.yml

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,17 @@ on:
4343
default: ''
4444
workflow:
4545
required: false
46+
<<<<<<< HEAD
4647
type: string
4748
default: 'pre-training'
49+
=======
50+
type: boolean
51+
default: false
52+
version_name:
53+
required: false
54+
type: string
55+
default: ''
56+
>>>>>>> 46b04fed2 (Add job to build and upload docker image to pypi_release workflow)
4857

4958
permissions:
5059
contents: read
@@ -115,7 +124,7 @@ jobs:
115124
push: true
116125
context: .
117126
file: ${{ inputs.dockerfile }}
118-
tags: gcr.io/tpu-prod-env-multipod/${{ inputs.image_name }}:latest
127+
tags: gcr.io/tpu-prod-env-multipod/${{ inputs.image_name }}:${{ github.run_id }}
119128
cache-from: type=gha
120129
outputs: type=image,compression=zstd,force-compression=true
121130
build-args: |
@@ -133,26 +142,32 @@ jobs:
133142
run: |
134143
SOURCE_IMAGE="gcr.io/tpu-prod-env-multipod/${INPUTS_IMAGE_NAME}"
135144
136-
# Add date tag
137-
gcloud container images add-tag "$SOURCE_IMAGE:latest" "$SOURCE_IMAGE:${INPUTS_IMAGE_DATE}" --quiet
145+
if [[ $INPUTS_VERSION_NAME ]]; then
146+
echo "Tagging docker images corresponding to PyPI release..."
147+
gcloud container images add-tag "$SOURCE_IMAGE:${{ github.run_id }}" "$SOURCE_IMAGE:${INPUTS_VERSION_NAME}" --quiet
148+
else
149+
echo "Tagging docker images corresponding to nightly release..."
138150
139-
# Convert date to YYYYMMDD format
140-
clean_date=$(echo "${INPUTS_IMAGE_DATE}" | sed 's/[-:]//g' | cut -c1-8)
151+
# Add date tag
152+
gcloud container images add-tag "$SOURCE_IMAGE:${{ github.run_id }}" "$SOURCE_IMAGE:${INPUTS_IMAGE_DATE}" --quiet
141153
142-
# Add MaxText tag
143-
maxtext_hash=$(git rev-parse --short HEAD)
144-
gcloud container images add-tag "$SOURCE_IMAGE:latest" "$SOURCE_IMAGE:maxtext_${maxtext_hash}_${clean_date}" --quiet
154+
# Convert date to YYYYMMDD format
155+
clean_date=$(echo "${INPUTS_IMAGE_DATE}" | sed 's/[-:]//g' | cut -c1-8)
145156
157+
# Add MaxText tag
158+
maxtext_hash=$(git rev-parse --short HEAD)
159+
gcloud container images add-tag "$SOURCE_IMAGE:${{ github.run_id }}" "$SOURCE_IMAGE:maxtext_${maxtext_hash}_${clean_date}" --quiet
146160
147161
# Add post-training dependencies tags
148162
if [ "${{ inputs.workflow }}" == "post-training" ]; then
149163
for dir in tunix vllm tpu-inference; do
150164
if [ -d "./$dir" ]; then
151-
dir_hash=$(git -C "$dir" rev-parse --short HEAD)
152-
gcloud container images add-tag "$SOURCE_IMAGE:latest" "$SOURCE_IMAGE:${dir}_${dir_hash}_${clean_date}" --quiet
153-
fi
154-
done
165+
gcloud container images add-tag "$SOURCE_IMAGE:${{ github.run_id }}" "$SOURCE_IMAGE:${dir}_${dir_hash}_${clean_date}" --quiet
166+
fi
167+
done
168+
fi
155169
fi
156170
env:
157171
INPUTS_IMAGE_NAME: ${{ inputs.image_name }}
158172
INPUTS_IMAGE_DATE: ${{ inputs.image_date }}
173+
INPUTS_VERSION_NAME: ${{ inputs.version_name }}

.github/workflows/pypi_release.yml

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ jobs:
4444

4545
publish_maxtext_package_to_pypi:
4646
name: Publish MaxText package to PyPI
47-
# Temporarily only require release_approval for a one-time upload.
48-
# Immediately revert this to `needs: [build_and_test_maxtext_package]`.
49-
needs: [release_approval]
47+
needs: [build_and_test_maxtext_package]
5048
runs-on: ubuntu-latest
5149
environment: release
5250
steps:
@@ -61,3 +59,38 @@ jobs:
6159
uses: pypa/gh-action-pypi-publish@release/v1
6260
with:
6361
packages-dir: dist/
62+
63+
# This job builds and pushes MaxText stable Docker images for both TPU and GPU devices.
64+
# It runs only after the release is approved, ensuring that the Docker images are built and pushed only for approved releases.
65+
# Creates docker image for MaxText commit corresponding to the release.
66+
upload_maxtext_docker_images:
67+
name: Build and upload MaxText stable Docker images
68+
needs: [publish_maxtext_package_to_pypi]
69+
strategy:
70+
fail-fast: false
71+
matrix:
72+
include:
73+
- device: tpu
74+
build_mode: stable
75+
image_name: maxtext_jax_stable
76+
workflow: pre-training
77+
dockerfile: ./dependencies/dockerfiles/maxtext_tpu_dependencies.Dockerfile
78+
- device: gpu
79+
build_mode: stable
80+
image_name: maxtext_gpu_jax_stable
81+
workflow: pre-training
82+
dockerfile: ./dependencies/dockerfiles/maxtext_gpu_dependencies.Dockerfile
83+
- device: tpu
84+
build_mode: stable
85+
image_name: maxtext_post_training_stable
86+
workflow: post-training
87+
dockerfile: ./dependencies/dockerfiles/maxtext_tpu_dependencies.Dockerfile
88+
uses: ./.github/workflows/build_and_push_docker_image.yml
89+
with:
90+
image_name: ${{ matrix.image_name }}
91+
device: ${{ matrix.device }}
92+
build_mode: ${{ matrix.build_mode }}
93+
workflow: ${{ matrix.workflow }}
94+
dockerfile: ${{ matrix.dockerfile }}
95+
maxtext_sha: ${{ github.sha }}
96+
version_name: ${{ github.event.release.tag_name }}

0 commit comments

Comments
 (0)