1+
2+ .service-rust-base :
3+ image : ${RUST_IMAGE}
4+ stage : check
5+
6+ .service-format-check :
7+ extends : .service-rust-base
8+ script :
9+ - cargo fmt --check --package ${SERVICE_NAME}
10+ allow_failure : true
11+
12+ .service-clippy :
13+ extends : .service-rust-base
14+ script :
15+ - cargo clippy --package ${SERVICE_NAME} -- -D warnings
16+ allow_failure : true
17+
18+ .service-build :
19+ extends : .service-rust-base
20+ stage : build
21+ script :
22+ - cargo build --release --package ${SERVICE_NAME}
23+ artifacts :
24+ paths :
25+ - target/release/${SERVICE_NAME}
26+ expire_in : 1 week
27+
28+ .service-image :
29+ image :
30+ name : moby/buildkit:rootless
31+ entrypoint : ['']
32+ before_script :
33+ - mkdir -p ~/.docker
34+ - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > ~/.docker/config.json
35+ stage : build
36+ script :
37+ - |
38+ buildctl-daemonless.sh build \
39+ --frontend dockerfile.v0 \
40+ --local context=. \
41+ --local dockerfile=./services/${SERVICE_DIR} \
42+ --import-cache type=registry,ref=$CI_REGISTRY_IMAGE/${SERVICE_NAME}:$CI_COMMIT_SHA-cache \
43+ --export-cache type=registry,ref=$CI_REGISTRY_IMAGE/${SERVICE_NAME}:$CI_COMMIT_SHA-cache,mode=max \
44+ --output type=image,name=$CI_REGISTRY_IMAGE/${SERVICE_NAME}:$CI_COMMIT_SHA,push=true
45+
46+ # #######################################################################
47+ # server
48+ # #######################################################################
49+
50+ .server-workflow :
51+ image : gitlab.futo.org:5050/devops/manifest-repo/library/docker:latest
52+ rules :
53+ - if : $CI_COMMIT_TAG =~ /^server-/
54+ when : always
55+ - if : $CI_PIPELINE_SOURCE == "merge_request_event"
56+ changes :
57+ - services/server/**/*
58+ - services/common/**/*
59+ - .gitlab/ci/build_services.yml
60+ - .gitlab/ci/deploy_services.yml
61+ - if : $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
62+ when : never
63+ - if : $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
64+ changes :
65+ - services/server/**/*
66+ - services/common/**/*
67+ - .gitlab/ci/build_services.yml
68+ - .gitlab/ci/deploy_services.yml
69+ variables :
70+ RUNNER_SCRIPT_TIMEOUT : 179m
71+ SERVICE_NAME : server
72+ SERVICE_DIR : server
73+
74+ server-format-check :
75+ extends :
76+ - .server-workflow
77+ - .service-format-check
78+
79+ server-clippy :
80+ extends :
81+ - .server-workflow
82+ - .service-clippy
83+
84+ server-build :
85+ extends :
86+ - .server-workflow
87+ - .service-build
88+
89+ server-image :
90+ extends :
91+ - .server-workflow
92+ - .service-image
93+ rules :
94+ - !reference [.server-workflow, rules]
95+ - !reference [.release-workflow, rules]
96+
97+ # #######################################################################
98+ # moderation
99+ # #######################################################################
100+
101+ .moderation-workflow :
102+ image : gitlab.futo.org:5050/devops/manifest-repo/library/docker:latest
103+ rules :
104+ - if : $CI_COMMIT_TAG =~ /^moderation-/
105+ when : always
106+ - if : $CI_PIPELINE_SOURCE == "merge_request_event"
107+ changes :
108+ - services/moderation/**/*
109+ - services/common/**/*
110+ - .gitlab/ci/build_services.yml
111+ - .gitlab/ci/deploy_services.yml
112+ - if : $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
113+ when : never
114+ - if : $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
115+ changes :
116+ - services/moderation/**/*
117+ - services/common/**/*
118+ - .gitlab/ci/build_services.yml
119+ - .gitlab/ci/deploy_services.yml
120+ variables :
121+ RUNNER_SCRIPT_TIMEOUT : 179m
122+ SERVICE_NAME : moderation-service
123+ SERVICE_DIR : moderation
124+
125+ moderation-format-check :
126+ extends :
127+ - .moderation-workflow
128+ - .service-format-check
129+
130+ moderation-clippy :
131+ extends :
132+ - .moderation-workflow
133+ - .service-clippy
134+
135+ moderation-build :
136+ extends :
137+ - .moderation-workflow
138+ - .service-build
139+
140+ moderation-image :
141+ extends :
142+ - .moderation-workflow
143+ - .service-image
144+ rules :
145+ - !reference [.moderation-workflow, rules]
146+ - !reference [.release-workflow, rules]
0 commit comments