88 description : " Docker image version"
99 required : true
1010 staging :
11- description : " Staging build"
11+ description : " Build staging images"
12+ type : boolean
13+ default : false
14+ prepull_staging :
15+ description : " Pre-pull staging Docker images"
1216 type : boolean
1317 default : false
1418 build_docker :
15- description : " Build docker images"
19+ description : " Build Docker images"
1620 type : boolean
1721 default : true
1822 build_aws :
3438
3539env :
3640 PACKER_VERSION : " 1.9.2"
37- BUILD_PREFIX : ${{ inputs.staging && format('stgn-{0}-', github.run_number) || '' }} # staging ? prefix : ''
41+ BUILD_DOCKER_REPO : ${{ inputs.staging && 'base-stgn' || 'base' }}
42+ PREPULL_DOCKER_REPO : ${{ inputs.prepull_staging && 'base-stgn' || 'base' }}
43+ VM_IMAGE_BUILD_PREFIX : ${{ inputs.staging && format('stgn-{0}-', github.run_number) || '' }} # staging ? prefix : ''
3844
3945jobs :
4046 build-docker :
6167 uses : docker/setup-qemu-action@v3
6268 - name : Build and upload to DockerHub
6369 run : |
64- docker buildx build --platform linux/amd64 --build-arg FLAVOR=${{ matrix.flavor }} --build-arg PYTHON=${{ matrix.python }} --push --provenance=false --tag dstackai/base :py${{ matrix.python }}-${{ inputs.image_version }}-cuda-12.1${{ matrix.flavor == 'devel' && '-devel' || '' }} -f base/Dockerfile .
70+ docker buildx build --platform linux/amd64 --build-arg FLAVOR=${{ matrix.flavor }} --build-arg PYTHON=${{ matrix.python }} --push --provenance=false --tag dstackai/${{ env.BUILD_DOCKER_REPO }} :py${{ matrix.python }}-${{ inputs.image_version }}-cuda-12.1${{ matrix.flavor == 'devel' && '-devel' || '' }} -f base/Dockerfile .
6571
6672 build-aws-images :
6773 needs : build-docker
8591 chmod +x packer
8692 - name : Run packer
8793 run : |
88- ./packer build -var-file=versions.json $PROD_VARS -var image_version=${{ inputs.image_version }} -var build_prefix=$BUILD_PREFIX aws-image${{ matrix.variant }}.json
94+ ./packer build -var-file=versions.json $PROD_VARS -var image_repo=${{ env.PREPULL_DOCKER_REPO }} -var image_version=${{ inputs.image_version }} -var build_prefix=$VM_IMAGE_BUILD_PREFIX aws-image${{ matrix.variant }}.json
8995 env :
9096 PROD_VARS : ${{ !inputs.staging && '-var-file=aws-vars-prod.json' || '' }} # production ? var-file : ''
9197
@@ -118,12 +124,12 @@ jobs:
118124 chmod +x packer
119125 - name : Run packer
120126 run : |
121- ./packer build -var-file=versions.json -var image_version=${{ inputs.image_version }} -var build_prefix=$BUILD_PREFIX azure-image${{ matrix.variant }}.json
127+ ./packer build -var-file=versions.json -var image_repo=${{ env.PREPULL_DOCKER_REPO }} -var image_version=${{ inputs.image_version }} -var build_prefix=$VM_IMAGE_BUILD_PREFIX azure-image${{ matrix.variant }}.json
122128 - name : Publish azure image
123129 if : ${{ !inputs.staging }}
124130 run : |
125- IMAGE_DEFINITION=${BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }}
126- IMAGE_NAME=${BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }}
131+ IMAGE_DEFINITION=${VM_IMAGE_BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }}
132+ IMAGE_NAME=${VM_IMAGE_BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }}
127133 ../publish_azure_image.sh $IMAGE_DEFINITION $IMAGE_NAME
128134
129135 build-gcp-images :
@@ -156,11 +162,11 @@ jobs:
156162 chmod +x packer
157163 - name : Run packer
158164 run : |
159- ./packer build -var-file=versions.json -var image_version=${{ inputs.image_version }} -var build_prefix=$BUILD_PREFIX gcp-image${{ matrix.variant }}.json
165+ ./packer build -var-file=versions.json -var image_repo=${{ env.PREPULL_DOCKER_REPO }} -var image_version=${{ inputs.image_version }} -var build_prefix=$VM_IMAGE_BUILD_PREFIX gcp-image${{ matrix.variant }}.json
160166 - name : Publish images
161167 run : |
162168 IMAGE_VERSION=${IMAGE_VERSION//./-}
163- gcloud compute images add-iam-policy-binding ${BUILD_PREFIX }dstack${{ matrix.variant }}-$IMAGE_VERSION --member='allAuthenticatedUsers' --role='roles/compute.imageUser'
169+ gcloud compute images add-iam-policy-binding ${VM_IMAGE_BUILD_PREFIX }dstack${{ matrix.variant }}-$IMAGE_VERSION --member='allAuthenticatedUsers' --role='roles/compute.imageUser'
164170 env :
165171 IMAGE_VERSION : ${{ inputs.image_version }}
166172
@@ -205,8 +211,9 @@ jobs:
205211 run : |
206212 ./packer build \
207213 -var-file=versions.json \
214+ -var image_repo=${{ env.PREPULL_DOCKER_REPO }} \
208215 -var image_version=${{ inputs.image_version }} \
209- -var build_prefix=$BUILD_PREFIX \
216+ -var build_prefix=$VM_IMAGE_BUILD_PREFIX \
210217 -var oci_compartment_ocid=$OCI_COMPARTMENT \
211218 -var oci_subnet_ocid=$OCI_SUBNET \
212219 -var oci_availability_domain=$OCI_AVAILABILITY_DOMAIN \
@@ -221,14 +228,14 @@ jobs:
221228 if : ${{ !inputs.staging }}
222229 run : |
223230 uv run scripts/oci_image_tools.py copy \
224- --image ${BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }} \
231+ --image ${VM_IMAGE_BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }} \
225232 --from $OCI_REGION \
226233 --compartment $OCI_COMPARTMENT
227234 - name : Publish image in OCI Marketplace
228235 if : ${{ !inputs.staging }}
229236 run : |
230237 uv run scripts/oci_image_tools.py publish \
231- --image ${BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }} \
238+ --image ${VM_IMAGE_BUILD_PREFIX }dstack${{ matrix.variant }}-${{ inputs.image_version }} \
232239 --compartment $OCI_COMPARTMENT \
233240 --version ${{ inputs.image_version }} \
234241 --description "Image for running workloads with dstack - https://dstack.ai/" \
0 commit comments