1*da0073e9SAndroid Build Coastguard Worker#!/usr/bin/env bash 2*da0073e9SAndroid Build Coastguard Worker# Script used only in CD pipeline 3*da0073e9SAndroid Build Coastguard Worker 4*da0073e9SAndroid Build Coastguard Workerset -eou pipefail 5*da0073e9SAndroid Build Coastguard Worker 6*da0073e9SAndroid Build Coastguard Workerimage="$1" 7*da0073e9SAndroid Build Coastguard Workershift 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard Workerif [ -z "${image}" ]; then 10*da0073e9SAndroid Build Coastguard Worker echo "Usage: $0 IMAGE" 11*da0073e9SAndroid Build Coastguard Worker exit 1 12*da0073e9SAndroid Build Coastguard Workerfi 13*da0073e9SAndroid Build Coastguard Worker 14*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE_NAME="pytorch/${image}" 15*da0073e9SAndroid Build Coastguard Worker 16*da0073e9SAndroid Build Coastguard Worker 17*da0073e9SAndroid Build Coastguard Workerexport DOCKER_BUILDKIT=1 18*da0073e9SAndroid Build Coastguard WorkerTOPDIR=$(git rev-parse --show-toplevel) 19*da0073e9SAndroid Build Coastguard Worker 20*da0073e9SAndroid Build Coastguard WorkerCUDA_VERSION=${CUDA_VERSION:-12.1} 21*da0073e9SAndroid Build Coastguard Worker 22*da0073e9SAndroid Build Coastguard Workercase ${CUDA_VERSION} in 23*da0073e9SAndroid Build Coastguard Worker cpu) 24*da0073e9SAndroid Build Coastguard Worker BASE_TARGET=base 25*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cpu 26*da0073e9SAndroid Build Coastguard Worker ;; 27*da0073e9SAndroid Build Coastguard Worker all) 28*da0073e9SAndroid Build Coastguard Worker BASE_TARGET=all_cuda 29*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=latest 30*da0073e9SAndroid Build Coastguard Worker ;; 31*da0073e9SAndroid Build Coastguard Worker *) 32*da0073e9SAndroid Build Coastguard Worker BASE_TARGET=cuda${CUDA_VERSION} 33*da0073e9SAndroid Build Coastguard Worker DOCKER_TAG=cuda${CUDA_VERSION} 34*da0073e9SAndroid Build Coastguard Worker ;; 35*da0073e9SAndroid Build Coastguard Workeresac 36*da0073e9SAndroid Build Coastguard Worker 37*da0073e9SAndroid Build Coastguard Worker 38*da0073e9SAndroid Build Coastguard Worker( 39*da0073e9SAndroid Build Coastguard Worker set -x 40*da0073e9SAndroid Build Coastguard Worker docker build \ 41*da0073e9SAndroid Build Coastguard Worker --target final \ 42*da0073e9SAndroid Build Coastguard Worker --progress plain \ 43*da0073e9SAndroid Build Coastguard Worker --build-arg "BASE_TARGET=${BASE_TARGET}" \ 44*da0073e9SAndroid Build Coastguard Worker --build-arg "CUDA_VERSION=${CUDA_VERSION}" \ 45*da0073e9SAndroid Build Coastguard Worker --build-arg "DEVTOOLSET_VERSION=9" \ 46*da0073e9SAndroid Build Coastguard Worker -t ${DOCKER_IMAGE_NAME} \ 47*da0073e9SAndroid Build Coastguard Worker $@ \ 48*da0073e9SAndroid Build Coastguard Worker -f "${TOPDIR}/.ci/docker/conda/Dockerfile" \ 49*da0073e9SAndroid Build Coastguard Worker ${TOPDIR}/.ci/docker/ 50*da0073e9SAndroid Build Coastguard Worker) 51*da0073e9SAndroid Build Coastguard Worker 52*da0073e9SAndroid Build Coastguard Workerif [[ "${DOCKER_TAG}" =~ ^cuda* ]]; then 53*da0073e9SAndroid Build Coastguard Worker # Test that we're using the right CUDA compiler 54*da0073e9SAndroid Build Coastguard Worker ( 55*da0073e9SAndroid Build Coastguard Worker set -x 56*da0073e9SAndroid Build Coastguard Worker docker run --rm "${DOCKER_IMAGE_NAME}" nvcc --version | grep "cuda_${CUDA_VERSION}" 57*da0073e9SAndroid Build Coastguard Worker ) 58*da0073e9SAndroid Build Coastguard Workerfi 59*da0073e9SAndroid Build Coastguard Worker 60*da0073e9SAndroid Build Coastguard WorkerGITHUB_REF=${GITHUB_REF:-$(git symbolic-ref -q HEAD || git describe --tags --exact-match)} 61*da0073e9SAndroid Build Coastguard WorkerGIT_BRANCH_NAME=${GITHUB_REF##*/} 62*da0073e9SAndroid Build Coastguard WorkerGIT_COMMIT_SHA=${GITHUB_SHA:-$(git rev-parse HEAD)} 63*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE_BRANCH_TAG=${DOCKER_IMAGE_NAME}-${GIT_BRANCH_NAME} 64*da0073e9SAndroid Build Coastguard WorkerDOCKER_IMAGE_SHA_TAG=${DOCKER_IMAGE_NAME}-${GIT_COMMIT_SHA} 65*da0073e9SAndroid Build Coastguard Workerif [[ "${WITH_PUSH:-}" == true ]]; then 66*da0073e9SAndroid Build Coastguard Worker ( 67*da0073e9SAndroid Build Coastguard Worker set -x 68*da0073e9SAndroid Build Coastguard Worker docker push "${DOCKER_IMAGE_NAME}" 69*da0073e9SAndroid Build Coastguard Worker if [[ -n ${GITHUB_REF} ]]; then 70*da0073e9SAndroid Build Coastguard Worker docker tag ${DOCKER_IMAGE_NAME} ${DOCKER_IMAGE_BRANCH_TAG} 71*da0073e9SAndroid Build Coastguard Worker docker tag ${DOCKER_IMAGE_NAME} ${DOCKER_IMAGE_SHA_TAG} 72*da0073e9SAndroid Build Coastguard Worker docker push "${DOCKER_IMAGE_BRANCH_TAG}" 73*da0073e9SAndroid Build Coastguard Worker docker push "${DOCKER_IMAGE_SHA_TAG}" 74*da0073e9SAndroid Build Coastguard Worker fi 75*da0073e9SAndroid Build Coastguard Worker ) 76*da0073e9SAndroid Build Coastguard Workerfi 77