xref: /aosp_15_r20/external/pytorch/.ci/docker/conda/build.sh (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
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