137 lines
5.9 KiB
YAML
137 lines
5.9 KiB
YAML
on:
|
|
workflow_call:
|
|
inputs:
|
|
clone_dir:
|
|
required: false
|
|
type: string
|
|
default: "Paddle"
|
|
task:
|
|
required: false
|
|
type: string
|
|
default: "cpu"
|
|
is_merge:
|
|
required: false
|
|
type: string
|
|
default: "false"
|
|
outputs:
|
|
docker_cpu_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_cpu_image }}
|
|
|
|
docker_sot_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_sot_image }}
|
|
|
|
docker_coverage_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_coverage_image }}
|
|
|
|
docker_build_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_build_image }}
|
|
|
|
docker_distribute_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_distribute_image }}
|
|
|
|
docker_xpu_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_xpu_image }}
|
|
|
|
docker_npu_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_npu_image }}
|
|
|
|
docker_dcu_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_dcu_image }}
|
|
|
|
docker_doc_image:
|
|
description: "Generate images for all CI usage"
|
|
value: ${{ jobs.build-docker-images.outputs.docker_doc_image }}
|
|
|
|
jobs:
|
|
build-docker-images:
|
|
if: ${{ github.repository_owner == 'PaddlePaddle' }}
|
|
name: Build docker
|
|
runs-on:
|
|
group: Docker-build
|
|
outputs:
|
|
docker_cpu_image: ${{ steps.build-docker-images.outputs.docker_cpu_image }}
|
|
docker_sot_image: ${{ steps.build-docker-images.outputs.docker_sot_image }}
|
|
docker_coverage_image: ${{ steps.build-docker-images.outputs.docker_coverage_image }}
|
|
docker_build_image: ${{ steps.build-docker-images.outputs.docker_build_image }}
|
|
docker_distribute_image: ${{ steps.build-docker-images.outputs.docker_distribute_image }}
|
|
docker_xpu_image: ${{ steps.build-docker-images.outputs.docker_xpu_image }}
|
|
docker_npu_image: ${{ steps.build-docker-images.outputs.docker_npu_image }}
|
|
docker_dcu_image: ${{ steps.build-docker-images.outputs.docker_dcu_image }}
|
|
docker_doc_image: ${{ steps.build-docker-images.outputs.docker_doc_image }}
|
|
steps:
|
|
- id: build-docker-images
|
|
name: Build docker images
|
|
env:
|
|
PR_ID: ${{ github.event.pull_request.number || '0' }}
|
|
COMMIT_ID: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
docker_cpu_file: Dockerfile.cuda9_cudnn7_gcc48_py35_centos6
|
|
docker_sot_file: Dockerfile.gcc133_ubuntu24_cpu_sot
|
|
docker_coverage_file: Dockerfile.cuda117_cudnn8_gcc82_ubuntu18_coverage
|
|
docker_build_file: Dockerfile.cuda11.2_cudnn8_gcc82_trt8
|
|
docker_distribute_file: Dockerfile.cuda123_cudnn9_gcc122_ubuntu20
|
|
docker_xpu_file: Dockerfile.develop.xre.ubuntu22
|
|
docker_npu_file: Dockerfile.develop.npu
|
|
docker_dcu_file: Dockerfile.develop.dtk
|
|
docker_doc_file: Dockerfile.doc
|
|
dockerfile_script: https://raw.githubusercontent.com/PaddlePaddle/Paddle/refs/heads/develop/tools/dockerfile/ci_dockerfile.sh
|
|
dockerfile_origin: https://raw.githubusercontent.com/PaddlePaddle/Paddle/refs/heads/develop/tools/dockerfile/Dockerfile.ubuntu20
|
|
run: |
|
|
set -x
|
|
rm -rf * .[^.]*
|
|
if [ "${{ inputs.is_merge }}" == "true" ]; then
|
|
mkdir -p tools/dockerfile && cd tools/dockerfile
|
|
wget -q --tries=5 --no-proxy ${dockerfile_script} ${dockerfile_origin} --no-check-certificate
|
|
else
|
|
wget -q --tries=5 --no-proxy https://paddle-github-action.bj.bcebos.com/PR/${{ inputs.clone_dir }}/${PR_ID}/${COMMIT_ID}/Paddle.tar.gz --no-check-certificate
|
|
tar xf Paddle.tar.gz --strip-components=1
|
|
rm Paddle.tar.gz
|
|
cd tools/dockerfile
|
|
fi
|
|
bash ci_dockerfile.sh
|
|
cd ../..
|
|
|
|
# docker build images
|
|
if [ "${{ inputs.task }}" == "cpu" ]; then
|
|
declare -A docker_files=(["docker_cpu"]="$docker_cpu_file" ["docker_distribute"]="$docker_distribute_file" ["docker_xpu"]="$docker_xpu_file" ["docker_npu"]="$docker_npu_file" ["docker_dcu"]="$docker_dcu_file" ["docker_sot"]="$docker_sot_file")
|
|
elif [ "${{ inputs.task }}" == "build" ]; then
|
|
declare -A docker_files=(["docker_build"]="$docker_build_file" ["docker_doc"]="$docker_doc_file")
|
|
else
|
|
declare -A docker_files=(["docker_coverage"]="$docker_coverage_file")
|
|
fi
|
|
for name in "${!docker_files[@]}"
|
|
do
|
|
md5_value=`md5sum tools/dockerfile/${docker_files[$name]} | awk '{print $1}'`
|
|
if [ $name == "docker_dcu" ]; then
|
|
md5_value="76937a563116f6008c8ca4cb4f592759"
|
|
fi
|
|
if [ $name == "docker_npu" ]; then
|
|
md5_value="a3793bdeea5ae881a0c1eaf4d7c30c64"
|
|
fi
|
|
docker_image="ccr-2vdh3abv-pub.cnc.bj.baidubce.com/ci/paddle:${md5_value}"
|
|
declare "${name}_image=${docker_image}"
|
|
echo "${name}_image=${docker_image}" >> $GITHUB_OUTPUT
|
|
set +e
|
|
docker pull $docker_image
|
|
pull_status=$?
|
|
set -e
|
|
if [ $pull_status -eq 0 ];then
|
|
echo use docker cache
|
|
else
|
|
docker build -t $docker_image -f tools/dockerfile/${docker_files[$name]} .
|
|
docker push $docker_image
|
|
echo end docker build
|
|
fi
|
|
done
|
|
|
|
# clean workspace
|
|
cd ${{ github.workspace }}
|
|
rm -rf * .[^.]*
|