forked from PaddlePaddle/Paddle
-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (124 loc) · 5.87 KB
/
docker.yml
File metadata and controls
135 lines (124 loc) · 5.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
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
if [ $? -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
set -e
done
# clean workspace
cd ${{ github.workspace }}
rm -rf * .[^.]*