Skip to content

Commit eaee021

Browse files
author
ffli
committed
update to ver2.2.5
1 parent c2511a1 commit eaee021

36 files changed

+2251
-107
lines changed

.dockerignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
.github
2+
.gitlab
3+
.idea
4+
.gitlab-ci.yml
5+
Jenkinsfile
6+
db.sqlite3

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.idea
2+
*.pyc

.gitlab-ci.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
variables:
2+
sonar_host_url: http://10.10.10.61:9000
3+
sonar_login: 0fad40c3880b4b9969f6e5039758615d02697250
4+
5+
# include:
6+
# - template: Security/SAST.gitlab-ci.yml
7+
8+
sonarqube:
9+
image: sonarscanner:4.7
10+
script:
11+
- sh /sonar-scanner/scan.sh
12+
artifacts:
13+
reports:
14+
sast:
15+
- gl-sast-report.json
16+
only:
17+
- main
18+
- merge_requests

.gitlab-ci.yml.bak

Lines changed: 353 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,353 @@
1+
stages:
2+
- updateSql
3+
- build
4+
- invalidateCachalot
5+
- deployComponent
6+
- deployIngress
7+
- rollbackConfirm
8+
- rollback
9+
10+
variables:
11+
PROJECTNAME: "devops"
12+
DOCKERHUB: "hub.leffss.com"
13+
DOCKERHUBPROJECT: "library"
14+
DOCKERHUBUSER: "admin"
15+
DOCKERHUBPASS: "Liff@2019"
16+
DINDSERVICE: "dind.kube-system"
17+
DINDSERVICEPORT: 2375
18+
NAMESPACE: devops
19+
20+
mysql-update:
21+
stage: updateSql
22+
image: hub.leffss.com/library/mysql:5.7
23+
script:
24+
- |
25+
if [ ! -d database ];then
26+
echo "none database path, exit 0"
27+
exit 0
28+
fi
29+
[ -d /data/${PROJECTNAME} ] || mkdir /data/${PROJECTNAME}
30+
cd database
31+
end_sql_num=$(ls 2>/dev/null|tail -1|awk -F '-' '{print $1}')
32+
if [[ ${end_sql_num} == "" ]];then
33+
echo "none sql update, exit 0"
34+
exit 0
35+
fi
36+
echo "end_sql_num: ${end_sql_num}"
37+
latest_sql_num=$(ls /data/${PROJECTNAME} 2>/dev/null|tail -1|awk -F '-' '{print $1}')
38+
if [[ ${latest_sql_num} == "" ]];then
39+
latest_sql_num=0
40+
fi
41+
echo "latest_sql_num: ${latest_sql_num}"
42+
if [[ ${end_sql_num} -lt ${latest_sql_num} ]];then
43+
echo "none sql update, exit 1"
44+
exit 0
45+
fi
46+
if [[ ${end_sql_num} -eq ${latest_sql_num} ]];then
47+
echo "none sql update, exit 2"
48+
exit 0
49+
fi
50+
while true;do
51+
let latest_sql_num=latest_sql_num+1
52+
if [[ ${latest_sql_num} -gt ${end_sql_num} ]];then
53+
echo "all sql update done, break"
54+
break
55+
fi
56+
need_update_sql=$(ls ${latest_sql_num}-*.sql 2>/dev/null)
57+
for sql in ${need_update_sql};do
58+
echo "update sql: ${sql}"
59+
cp -arf ${sql} /data/${PROJECTNAME}
60+
done
61+
done
62+
#rules:
63+
# - if: $CI_COMMIT_TAG && $CI_BUILD_REF_NAME == "dev"
64+
# gitlab ci 无法做到指定分支打tag时运行job,所以使用规范 COMMIT_MESSAGE 的方法发布指定版本
65+
rules:
66+
- if: '$CI_COMMIT_MESSAGE =~ /^deploy dev/'
67+
- if: $CI_COMMIT_TAG
68+
69+
devops-build:
70+
stage: build
71+
retry: 2
72+
variables:
73+
DOCKER_HOST: tcp://${DINDSERVICE}:${DINDSERVICEPORT}/
74+
#DOCKER_DRIVER: overlay2
75+
DOCKER_TLS_CERTDIR: ""
76+
dockerfile: "Dockerfile"
77+
before_script:
78+
- docker login ${DOCKERHUB} -u "${DOCKERHUBUSER}" -p "${DOCKERHUBPASS}"
79+
script:
80+
- env
81+
- cp -arf ./deploy/settings.py ./devops
82+
- docker build -f ${dockerfile} --cache-from ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:latest -t ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG} -t ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:latest .
83+
- docker images
84+
- docker push ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG}
85+
- docker push ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:latest
86+
after_script:
87+
- docker logout ${DOCKERHUB}
88+
tags:
89+
- "docker"
90+
only:
91+
- tags
92+
93+
devops-nginx-build:
94+
stage: build
95+
retry: 2
96+
variables:
97+
DOCKER_HOST: tcp://${DINDSERVICE}:${DINDSERVICEPORT}/
98+
#DOCKER_DRIVER: overlay2
99+
DOCKER_TLS_CERTDIR: ""
100+
dockerfile: "Dockerfile-nginx"
101+
before_script:
102+
- docker login ${DOCKERHUB} -u "${DOCKERHUBUSER}" -p "${DOCKERHUBPASS}"
103+
script:
104+
- cp -arf ./deploy/settings.py ./devops
105+
- docker build -f ${dockerfile} --cache-from ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}-nginx:latest -t ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}-nginx:${CI_COMMIT_TAG} -t ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}-nginx:latest .
106+
- docker images
107+
- docker push ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}-nginx:${CI_COMMIT_TAG}
108+
- docker push ${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}-nginx:latest
109+
after_script:
110+
- docker logout ${DOCKERHUB}
111+
tags:
112+
- "docker"
113+
only:
114+
- tags
115+
116+
devops-invalidate-cachalot:
117+
stage: invalidateCachalot
118+
image: hub.leffss.com/library/${PROJECTNAME}:${CI_COMMIT_TAG}
119+
script:
120+
- cd /devops
121+
- sed -i "s/mysql-service/mysql-service.${NAMESPACE}/g" devops/settings.py
122+
- - sed -i "s/redis-service/redis-service.${NAMESPACE}/g" devops/settings.py
123+
- python3 manage.py invalidate_cachalot
124+
only:
125+
- tags
126+
127+
.deploy_component: &deploy_component |
128+
[ -d ~/.kube ] || mkdir ~/.kube
129+
echo "${kube_config}" > ~/.kube/config
130+
cp -arf deploy/${component_name}-template.yaml ${component_name}-${CI_COMMIT_TAG}.yaml
131+
sed -i "s#{{img_url}}#${img_url}#g" ${component_name}-${CI_COMMIT_TAG}.yaml
132+
sed -i "s#{{component_name}}#${component_name}#g" ${component_name}-${CI_COMMIT_TAG}.yaml
133+
sed -i "s#{{NAMESPACE}}#${NAMESPACE}#g" ${component_name}-${CI_COMMIT_TAG}.yaml
134+
kubectl apply -f ${component_name}-${CI_COMMIT_TAG}.yaml --record
135+
echo
136+
echo
137+
echo "============================================================="
138+
echo " ${component_name} Rollback Indx List"
139+
echo "============================================================="
140+
kubectl -n ${NAMESPACE} rollout history deployment ${component_name}
141+
142+
celery-beat-deploy:
143+
stage: deployComponent
144+
image: hub.leffss.com/library/kubectl:v1.19.9
145+
variables:
146+
kube_config: "${KUBE_ADMIN_CONFIG}"
147+
img_url: "${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG}"
148+
component_name: "celery-beat"
149+
script:
150+
- *deploy_component
151+
when: on_success
152+
only:
153+
- tags
154+
needs: ["devops-build"]
155+
156+
celery-worker-deploy:
157+
stage: deployComponent
158+
image: hub.leffss.com/library/kubectl:v1.19.9
159+
variables:
160+
kube_config: "${KUBE_ADMIN_CONFIG}"
161+
img_url: "${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG}"
162+
component_name: "celery-worker"
163+
script:
164+
- *deploy_component
165+
when: on_success
166+
only:
167+
- tags
168+
needs: ["devops-build"]
169+
170+
daphne-deploy:
171+
stage: deployComponent
172+
image: hub.leffss.com/library/kubectl:v1.19.9
173+
variables:
174+
kube_config: "${KUBE_ADMIN_CONFIG}"
175+
img_url: "${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG}"
176+
component_name: "daphne"
177+
script:
178+
- *deploy_component
179+
when: on_success
180+
only:
181+
- tags
182+
needs: ["devops-build"]
183+
184+
gunicorn-deploy:
185+
stage: deployComponent
186+
image: hub.leffss.com/library/kubectl:v1.19.9
187+
variables:
188+
kube_config: "${KUBE_ADMIN_CONFIG}"
189+
img_url: "${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG}"
190+
component_name: "gunicorn"
191+
script:
192+
- *deploy_component
193+
when: on_success
194+
only:
195+
- tags
196+
needs: ["devops-build"]
197+
198+
sshd-deploy:
199+
stage: deployComponent
200+
image: hub.leffss.com/library/kubectl:v1.19.9
201+
variables:
202+
kube_config: "${KUBE_ADMIN_CONFIG}"
203+
img_url: "${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}:${CI_COMMIT_TAG}"
204+
component_name: "sshd"
205+
script:
206+
- *deploy_component
207+
when: on_success
208+
only:
209+
- tags
210+
needs: ["devops-build"]
211+
212+
nginx-deploy:
213+
stage: deployComponent
214+
image: hub.leffss.com/library/kubectl:v1.19.9
215+
variables:
216+
kube_config: "${KUBE_ADMIN_CONFIG}"
217+
img_url: "${DOCKERHUB}/${DOCKERHUBPROJECT}/${PROJECTNAME}-nginx:${CI_COMMIT_TAG}"
218+
component_name: "nginx"
219+
script:
220+
- *deploy_component
221+
when: on_success
222+
only:
223+
- tags
224+
needs: ["devops-nginx-build"]
225+
226+
.deploy_ingress: &deploy_ingress |
227+
[ -d ~/.kube ] || mkdir ~/.kube
228+
echo "${kube_config}" > ~/.kube/config
229+
date
230+
cp -arf deploy/${component_name}-template.yaml ${component_name}-${CI_COMMIT_TAG}.yaml
231+
sed -i "s#{{component_name}}#${component_name}#g" ${component_name}-${CI_COMMIT_TAG}.yaml
232+
sed -i "s#{{NAMESPACE}}#${NAMESPACE}#g" ${component_name}-${CI_COMMIT_TAG}.yaml
233+
kubectl apply -f ${component_name}-${CI_COMMIT_TAG}.yaml --record
234+
echo
235+
echo
236+
echo "============================================================="
237+
echo " ${component_name} Indx List"
238+
echo "============================================================="
239+
kubectl -n ${NAMESPACE} get ingress ${component_name}
240+
241+
ingress-deploy:
242+
stage: deployIngress
243+
image: hub.leffss.com/library/kubectl:v1.19.9
244+
variables:
245+
kube_config: "${KUBE_ADMIN_CONFIG}"
246+
component_name: "devops-ingress"
247+
script:
248+
- *deploy_ingress
249+
when: on_success
250+
only:
251+
- tags
252+
needs: ["daphne-deploy","gunicorn-deploy","sshd-deploy","nginx-deploy"]
253+
254+
confirm-rollback:
255+
stage: rollbackConfirm
256+
script:
257+
- echo "rollbackConfirm"
258+
when: manual
259+
only:
260+
- tags
261+
262+
.rollback_component: &rollback_component |
263+
[ -d ~/.kube ] || mkdir ~/.kube
264+
echo "${kube_config}" > ~/.kube/config
265+
last_version=$(kubectl -n ${NAMESPACE} rollout history deployment ${component_name} | sed -n '3,$'p | tail -6 | head -5 | sed '$d' | awk -F"[ =]+" '{print $1" "$5}' | tail -1 | head -1)
266+
last_version_num=$(echo ${last_version}|awk '{print $1}')
267+
last_version_name=$(echo ${last_version}|awk '{print $2}')
268+
echo
269+
echo
270+
echo "============================================================="
271+
echo " ${component_name} Rollback to ${last_version_name}"
272+
echo "============================================================="
273+
kubectl -n ${NAMESPACE} rollout undo deployment ${component_name} --to-revision=$last_version_num
274+
kubectl -n ${NAMESPACE} rollout history deployment ${component_name}
275+
276+
celery-beat-rollback:
277+
stage: rollback
278+
# 指定 image,不指定的话会使用 runner 配置文件 /etc/gitlab-runner/config.toml 中设置的 image
279+
image: hub.leffss.com/library/kubectl:v1.19.9
280+
variables:
281+
kube_config: "${KUBE_ADMIN_CONFIG}"
282+
component_name: "celery-beat"
283+
script:
284+
- *rollback_component
285+
when: on_success
286+
only:
287+
- tags
288+
needs: ["confirm-rollback"]
289+
290+
celery-worker-rollback:
291+
stage: rollback
292+
image: hub.leffss.com/library/kubectl:v1.19.9
293+
variables:
294+
kube_config: "${KUBE_ADMIN_CONFIG}"
295+
component_name: "celery-worker"
296+
script:
297+
- *rollback_component
298+
when: on_success
299+
only:
300+
- tags
301+
needs: ["confirm-rollback"]
302+
303+
daphne-rollback:
304+
stage: rollback
305+
image: hub.leffss.com/library/kubectl:v1.19.9
306+
variables:
307+
kube_config: "${KUBE_ADMIN_CONFIG}"
308+
component_name: "daphne"
309+
script:
310+
- *rollback_component
311+
when: on_success
312+
only:
313+
- tags
314+
needs: ["confirm-rollback"]
315+
316+
gunicorn-rollback:
317+
stage: rollback
318+
image: hub.leffss.com/library/kubectl:v1.19.9
319+
variables:
320+
kube_config: "${KUBE_ADMIN_CONFIG}"
321+
component_name: "gunicorn"
322+
script:
323+
- *rollback_component
324+
when: on_success
325+
only:
326+
- tags
327+
needs: ["confirm-rollback"]
328+
329+
sshd-rollback:
330+
stage: rollback
331+
image: hub.leffss.com/library/kubectl:v1.19.9
332+
variables:
333+
kube_config: "${KUBE_ADMIN_CONFIG}"
334+
component_name: "sshd"
335+
script:
336+
- *rollback_component
337+
when: on_success
338+
only:
339+
- tags
340+
needs: ["confirm-rollback"]
341+
342+
nginx-rollback:
343+
stage: rollback
344+
image: hub.leffss.com/library/kubectl:v1.19.9
345+
variables:
346+
kube_config: "${KUBE_ADMIN_CONFIG}"
347+
component_name: "nginx"
348+
script:
349+
- *rollback_component
350+
when: on_success
351+
only:
352+
- tags
353+
needs: ["confirm-rollback"]

Dockerfile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ RUN cd /devops && /usr/local/bin/pip install --trusted-host mirrors.aliyun.com -
1010
RUN cd /devops && echo_supervisord_conf > /etc/supervisord.conf && /bin/cp -a /etc/supervisord.conf /etc/supervisord_all.conf && cat supervisord_all.conf >> /etc/supervisord_all.conf && \
1111
sed -i 's/nodaemon=false/nodaemon=true/g' /etc/supervisord_all.conf
1212

13-
1413
RUN cd /devops && /bin/cp -a /etc/supervisord.conf /etc/supervisord_celery_beat.conf && cat supervisord_celery_beat.conf >> /etc/supervisord_celery_beat.conf && \
1514
sed -i 's/nodaemon=false/nodaemon=true/g' /etc/supervisord_celery_beat.conf
1615

@@ -26,7 +25,7 @@ RUN cd /devops && /bin/cp -a /etc/supervisord.conf /etc/supervisord_devops_gunic
2625
RUN cd /devops && /bin/cp -a /etc/supervisord.conf /etc/supervisord_sshd.conf && cat supervisord_sshd.conf >> /etc/supervisord_sshd.conf && \
2726
sed -i 's/nodaemon=false/nodaemon=true/g' /etc/supervisord_sshd.conf
2827

29-
RUN dpkg -i sshpass_1.06-1_amd64.deb
28+
RUN dpkg -i sshpass_1.06-1_amd64.deb && mkdir -p /devops/logs
3029
EXPOSE 8000
3130
EXPOSE 8001
3231
EXPOSE 2222

0 commit comments

Comments
 (0)