1+ name : Docker Build and Push All Images to tencentyun
2+
3+ on :
4+ workflow_dispatch :
5+ inputs :
6+ runner_label_json :
7+ description : ' JSON 格式的 runner 标签数组(如 ["ubuntu-latest"] 或 ["self-hosted"])'
8+ required : true
9+ default : ' ["ubuntu-latest"]'
10+
11+ jobs :
12+ build-and-push-main-amd64 :
13+ runs-on : ${{ fromJson(inputs.runner_label_json) }}
14+ steps :
15+ - name : Set up Docker Buildx
16+ run : |
17+ if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then
18+ docker buildx create --name nexent_builder --use
19+ else
20+ docker buildx use nexent_builder
21+ fi
22+ - name : Checkout code
23+ uses : actions/checkout@v4
24+ - name : Build main image (amd64) and load locally
25+ run : |
26+ docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent:amd64 -f make/main/Dockerfile .
27+ - name : Login to Tencent Cloud
28+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
29+ - name : Push main image (amd64) to Tencent Cloud
30+ run : docker push ccr.ccs.tencentyun.com/nexent-hub/nexent:amd64
31+
32+ build-and-push-main-arm64 :
33+ runs-on : ${{ fromJson(inputs.runner_label_json) }}
34+ steps :
35+ - name : Set up Docker Buildx
36+ run : |
37+ if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then
38+ docker buildx create --name nexent_builder --use
39+ else
40+ docker buildx use nexent_builder
41+ fi
42+ - name : Checkout code
43+ uses : actions/checkout@v4
44+ - name : Build main image (arm64) and load locally
45+ run : |
46+ docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent:arm64 -f make/main/Dockerfile .
47+ - name : Login to Tencent Cloud
48+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
49+ - name : Push main image (arm64) to Tencent Cloud
50+ run : docker push ccr.ccs.tencentyun.com/nexent-hub/nexent:arm64
51+
52+ build-and-push-data-process-amd64 :
53+ runs-on : ${{ fromJson(inputs.runner_label_json) }}
54+ steps :
55+ - name : Free up disk space on GitHub runner
56+ run : |
57+ sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
58+ - name : Set up Docker Buildx
59+ run : |
60+ if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then
61+ docker buildx create --name nexent_builder --use
62+ else
63+ docker buildx use nexent_builder
64+ fi
65+ - name : Checkout code
66+ uses : actions/checkout@v4
67+ - name : Clone model
68+ run : |
69+ GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Nexent-AI/model-assets
70+ cd ./model-assets
71+ GIT_TRACE=1 GIT_CURL_VERBOSE=1 GIT_LFS_LOG=debug git lfs pull
72+ rm -rf .git .gitattributes
73+ - name : Build data process image (amd64) and load locally
74+ run : |
75+ docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:amd64 -f make/data_process/Dockerfile .
76+ - name : Login to Tencent Cloud
77+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
78+ - name : Push data process image (amd64) to Tencent Cloud
79+ run : docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:amd64
80+
81+ build-and-push-data-process-arm64 :
82+ runs-on : ${{ fromJson(inputs.runner_label_json) }}
83+ steps :
84+ - name : Free up disk space on GitHub runner
85+ run : |
86+ sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
87+ - name : Set up Docker Buildx
88+ run : |
89+ if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then
90+ docker buildx create --name nexent_builder --use
91+ else
92+ docker buildx use nexent_builder
93+ fi
94+ - name : Checkout code
95+ uses : actions/checkout@v4
96+ - name : Clone model
97+ run : |
98+ GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Nexent-AI/model-assets
99+ cd ./model-assets
100+ GIT_TRACE=1 GIT_CURL_VERBOSE=1 GIT_LFS_LOG=debug git lfs pull
101+ rm -rf .git .gitattributes
102+ - name : Build data process image (arm64) and load locally
103+ run : |
104+ docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:arm64 -f make/data_process/Dockerfile .
105+ - name : Login to Tencent Cloud
106+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
107+ - name : Push data process image (arm64) to Tencent Cloud
108+ run : docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:arm64
109+
110+ build-and-push-web-amd64 :
111+ runs-on : ${{ fromJson(inputs.runner_label_json) }}
112+ steps :
113+ - name : Set up Docker Buildx
114+ run : |
115+ if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then
116+ docker buildx create --name nexent_builder --use
117+ else
118+ docker buildx use nexent_builder
119+ fi
120+ - name : Checkout code
121+ uses : actions/checkout@v4
122+ - name : Build web image (amd64) and load locally
123+ run : |
124+ docker buildx build --platform linux/amd64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-web:amd64 -f make/web/Dockerfile .
125+ - name : Login to Tencent Cloud
126+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
127+ - name : Push web image (amd64) to Tencent Cloud
128+ run : docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-web:amd64
129+
130+ build-and-push-web-arm64 :
131+ runs-on : ${{ fromJson(inputs.runner_label_json) }}
132+ steps :
133+ - name : Set up Docker Buildx
134+ run : |
135+ if ! docker buildx inspect nexent_builder > /dev/null 2>&1; then
136+ docker buildx create --name nexent_builder --use
137+ else
138+ docker buildx use nexent_builder
139+ fi
140+ - name : Checkout code
141+ uses : actions/checkout@v4
142+ - name : Build web image (arm64) and load locally
143+ run : |
144+ docker buildx build --platform linux/arm64 --load -t ccr.ccs.tencentyun.com/nexent-hub/nexent-web:arm64 -f make/web/Dockerfile .
145+ - name : Login to Tencent Cloud
146+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
147+ - name : Push web image (arm64) to Tencent Cloud
148+ run : docker push ccr.ccs.tencentyun.com/nexent-hub/nexent-web:arm64
149+
150+ manifest-push-main :
151+ runs-on : ubuntu-latest
152+ needs :
153+ - build-and-push-main-amd64
154+ - build-and-push-main-arm64
155+ steps :
156+ - name : Login to Tencent Cloud
157+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
158+ - name : Create and push manifest for main (Tencent Cloud)
159+ run : |
160+ docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent:latest \
161+ ccr.ccs.tencentyun.com/nexent-hub/nexent:amd64 \
162+ ccr.ccs.tencentyun.com/nexent-hub/nexent:arm64
163+ docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent:latest
164+
165+ manifest-push-data-process :
166+ runs-on : ubuntu-latest
167+ needs :
168+ - build-and-push-data-process-amd64
169+ - build-and-push-data-process-arm64
170+ steps :
171+ - name : Login to Tencent Cloud
172+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
173+ - name : Create and push manifest for data-process (Tencent Cloud)
174+ run : |
175+ docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:latest \
176+ ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:amd64 \
177+ ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:arm64
178+ docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent-data-process:latest
179+
180+ manifest-push-web :
181+ runs-on : ubuntu-latest
182+ needs :
183+ - build-and-push-web-amd64
184+ - build-and-push-web-arm64
185+ steps :
186+ - name : Login to Tencent Cloud
187+ run : echo ${{ secrets.TCR_PASSWORD }} | docker login ccr.ccs.tencentyun.com --username=${{ secrets.TCR_USERNAME }} --password-stdin
188+ - name : Create and push manifest for web (Tencent Cloud)
189+ run : |
190+ docker manifest create ccr.ccs.tencentyun.com/nexent-hub/nexent-web:latest \
191+ ccr.ccs.tencentyun.com/nexent-hub/nexent-web:amd64 \
192+ ccr.ccs.tencentyun.com/nexent-hub/nexent-web:arm64
193+ docker manifest push ccr.ccs.tencentyun.com/nexent-hub/nexent-web:latest
0 commit comments