@seniorsistemas/exclusion-process-component 0.0.1-c049d10c-e93a-4d63-9c2a-b17bca40c324 → 0.6.0-44030ff3-2eeb-49f7-8927-0920cc01a805

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/.editorconfig +19 -0
  2. package/.gitlab-ci.yml +74 -0
  3. package/.prettierrc +8 -0
  4. package/.senior-ci-extensions.sh +21 -0
  5. package/.vscode/settings.json +6 -0
  6. package/CHANGELOG.md +22 -0
  7. package/README.md +16 -0
  8. package/angular.json +144 -0
  9. package/archive.tar.gz +0 -0
  10. package/e2e/app.e2e-spec.ts +14 -0
  11. package/e2e/app.po.ts +11 -0
  12. package/e2e/tsconfig.e2e.json +14 -0
  13. package/karma.conf.js +53 -0
  14. package/lib/.browserslistrc +5 -0
  15. package/lib/package.json +19 -0
  16. package/{enums/enum-exclusion-process-status.d.ts → lib/src/enums/enum-exclusion-process-status.ts} +1 -1
  17. package/lib/src/exclusion-details/exclusion-details.component.html +84 -0
  18. package/lib/src/exclusion-details/exclusion-details.component.scss +47 -0
  19. package/lib/src/exclusion-details/exclusion-details.component.spec.ts +171 -0
  20. package/lib/src/exclusion-details/exclusion-details.component.ts +235 -0
  21. package/lib/src/exclusion-details/exclusion-details.module.ts +23 -0
  22. package/{exclusion-details/protocols/exclusion-details.d.ts → lib/src/exclusion-details/protocols/exclusion-details.ts} +1 -0
  23. package/{exclusion-details/protocols/show-details-information.d.ts → lib/src/exclusion-details/protocols/show-details-information.ts} +1 -1
  24. package/lib/src/exclusions-list/exclusions-list.component.html +157 -0
  25. package/lib/src/exclusions-list/exclusions-list.component.spec.ts +526 -0
  26. package/lib/src/exclusions-list/exclusions-list.component.ts +335 -0
  27. package/lib/src/exclusions-list/exclusions-list.module.ts +52 -0
  28. package/lib/src/exclusions-list/exclusions-list.routing.ts +89 -0
  29. package/lib/src/exclusions-list/index.ts +2 -0
  30. package/lib/src/logical-delete.module.ts +22 -0
  31. package/{models/exclusion-process-step-group.d.ts → lib/src/models/exclusion-process-step-group.ts} +1 -0
  32. package/{models/exclusion-process-step.d.ts → lib/src/models/exclusion-process-step.ts} +1 -0
  33. package/{models/exclusion-process.d.ts → lib/src/models/exclusion-process.ts} +1 -0
  34. package/{models/list-params.d.ts → lib/src/models/list-params.ts} +1 -0
  35. package/{models/project-config.d.ts → lib/src/models/project-config.ts} +3 -1
  36. package/lib/src/services/filter.service.spec.ts +290 -0
  37. package/lib/src/services/filter.service.ts +109 -0
  38. package/lib/src/services/index.ts +1 -0
  39. package/lib/src/services/logical-delete-config.service.spec.ts +59 -0
  40. package/lib/src/services/logical-delete-config.service.ts +25 -0
  41. package/lib/src/services/logical-delete.service.spec.ts +322 -0
  42. package/lib/src/services/logical-delete.service.ts +122 -0
  43. package/lib/test.ts +14 -0
  44. package/lib/tsconfig.lib.json +19 -0
  45. package/lib/tsconfig.lib.prod.json +6 -0
  46. package/lib/tsconfig.spec.json +12 -0
  47. package/lib/tslint.json +19 -0
  48. package/package.json +59 -18
  49. package/protractor.conf.js +28 -0
  50. package/senior-ci/.devcontainer/Dockerfile +27 -0
  51. package/senior-ci/.devcontainer/devcontainer.json +71 -0
  52. package/senior-ci/.editorconfig +14 -0
  53. package/senior-ci/.gitattributes +5 -0
  54. package/senior-ci/.gitlab-ci.yml +53 -0
  55. package/senior-ci/.pylintrc +562 -0
  56. package/senior-ci/.vscode/launch.json +102 -0
  57. package/senior-ci/CHANGELOG.md +1564 -0
  58. package/senior-ci/CONTRIBUTING.md +31 -0
  59. package/senior-ci/README.md +26 -0
  60. package/senior-ci/ci/ci.sh +74 -0
  61. package/senior-ci/ci/sonar_scanner.py +48 -0
  62. package/senior-ci/common/__init__.py +250 -0
  63. package/senior-ci/common/default-files/pom.xml +10 -0
  64. package/senior-ci/common/docker-helpers.sh +57 -0
  65. package/senior-ci/common/extensions.py +88 -0
  66. package/senior-ci/common/flutter-helpers.sh +3 -0
  67. package/senior-ci/common/getopt_helper.py +168 -0
  68. package/senior-ci/common/graphql_client.py +40 -0
  69. package/senior-ci/common/helm_helpers.py +40 -0
  70. package/senior-ci/common/notification-helpers.sh +15 -0
  71. package/senior-ci/common/npm-helper.sh +4 -0
  72. package/senior-ci/common/parallel-helper.sh +8 -0
  73. package/senior-ci/common/release-helpers.sh +196 -0
  74. package/senior-ci/common/s3cache-helpers.sh +47 -0
  75. package/senior-ci/common/senior-ci-extensions-helpers.sh +15 -0
  76. package/senior-ci/common/sonar_helper.py +203 -0
  77. package/senior-ci/common/validations/buildable_project.py +61 -0
  78. package/senior-ci/common/validations/check_deprecated_primitives.py +49 -0
  79. package/senior-ci/common/validations/check_project_path.py +40 -0
  80. package/senior-ci/common/validations/check_sonar_config_files.py +41 -0
  81. package/senior-ci/common/validations/check_tags.py +41 -0
  82. package/senior-ci/common/validations/validate_changelog.py +151 -0
  83. package/senior-ci/common/validations/validate_issues.py +320 -0
  84. package/senior-ci/docker/build.sh +18 -0
  85. package/senior-ci/docker/config-host.sh +29 -0
  86. package/senior-ci/docker/deploy-service.sh +79 -0
  87. package/senior-ci/docker/push.sh +22 -0
  88. package/senior-ci/frontend/npm/bibliotecas/ci.sh +149 -0
  89. package/senior-ci/frontend/npm/ci.sh +370 -0
  90. package/senior-ci/frontend/npm/release-translations.sh +164 -0
  91. package/senior-ci/helm/deploy.py +56 -0
  92. package/senior-ci/helm/publish.py +41 -0
  93. package/senior-ci/hook/release_notification.sh +88 -0
  94. package/senior-ci/hook/text_notification.sh +10 -0
  95. package/senior-ci/java/bibliotecas/ci.sh +215 -0
  96. package/senior-ci/java/sdl/ci.sh +372 -0
  97. package/senior-ci/java/sdl/scripts/hotfix.sh +78 -0
  98. package/senior-ci/mobile/flutter/apps/__main__.py +5 -0
  99. package/senior-ci/mobile/flutter/apps/ci.py +193 -0
  100. package/senior-ci/mobile/flutter/libs/__main__.py +5 -0
  101. package/senior-ci/mobile/flutter/libs/ci.py +178 -0
  102. package/senior-ci/mobile/flutter/scripts/release.sh +54 -0
  103. package/senior-ci/release-candidate/backend/get_version.sh +64 -0
  104. package/senior-ci/release-candidate/close_branch.sh +113 -0
  105. package/senior-ci/release-candidate/common/create_hotfix.sh +28 -0
  106. package/senior-ci/release-candidate/common/create_release.sh +30 -0
  107. package/senior-ci/release-candidate/create_branch.sh +64 -0
  108. package/senior-ci/release-candidate/frontend/get_version.sh +43 -0
  109. package/senior-ci/requirements-dev.txt +5 -0
  110. package/senior-ci/requirements.txt +5 -0
  111. package/senior-ci/scripts/apply_yamls.py +229 -0
  112. package/senior-ci/scripts/create_sre_issue/__main__.py +7 -0
  113. package/senior-ci/scripts/create_sre_issue/create_sre_issue.py +267 -0
  114. package/senior-ci/scripts/create_sre_issue/helpers.py +166 -0
  115. package/senior-ci/scripts/create_sre_issue/jira_manager.py +37 -0
  116. package/senior-ci/scripts/validate_changelog.sh +3 -0
  117. package/senior-ci/sonar-project.properties +1 -0
  118. package/server.js +5 -0
  119. package/sonar-project.properties +10 -0
  120. package/src/app/app.component.html +43 -0
  121. package/src/app/app.component.scss +36 -0
  122. package/src/app/app.component.ts +56 -0
  123. package/src/app/app.module.ts +64 -0
  124. package/src/app/shared/shared.module.ts +28 -0
  125. package/src/environments/environment.default.ts +3 -0
  126. package/src/environments/environment.prod.ts +6 -0
  127. package/src/environments/environment.ts +7 -0
  128. package/src/favicon.ico +0 -0
  129. package/src/index.html +17 -0
  130. package/src/locale/en-US.json +3 -0
  131. package/src/locale/es-ES.json +3 -0
  132. package/src/locale/pt-BR.json +3 -0
  133. package/src/main.ts +13 -0
  134. package/src/polyfills.ts +58 -0
  135. package/src/styles.scss +11 -0
  136. package/src/tsconfig.app.json +21 -0
  137. package/src/typings.d.ts +15 -0
  138. package/tsconfig.json +39 -0
  139. package/tslint.json +80 -0
  140. package/bundles/seniorsistemas-exclusion-process-component.umd.js +0 -747
  141. package/bundles/seniorsistemas-exclusion-process-component.umd.js.map +0 -1
  142. package/bundles/seniorsistemas-exclusion-process-component.umd.min.js +0 -16
  143. package/bundles/seniorsistemas-exclusion-process-component.umd.min.js.map +0 -1
  144. package/esm2015/enums/enum-exclusion-process-status.js +0 -8
  145. package/esm2015/exclusion-details/exclusion-details.component.js +0 -216
  146. package/esm2015/exclusion-details/exclusion-details.module.js +0 -28
  147. package/esm2015/exclusion-details/index.js +0 -3
  148. package/esm2015/exclusion-details/protocols/exclusion-details.js +0 -1
  149. package/esm2015/exclusion-details/protocols/index.js +0 -2
  150. package/esm2015/exclusion-details/protocols/show-details-information.js +0 -3
  151. package/esm2015/logical-delete.module.js +0 -27
  152. package/esm2015/models/exclusion-process-step-group.js +0 -1
  153. package/esm2015/models/exclusion-process-step.js +0 -1
  154. package/esm2015/models/exclusion-process.js +0 -1
  155. package/esm2015/models/index.js +0 -1
  156. package/esm2015/models/list-params.js +0 -1
  157. package/esm2015/models/list-result.js +0 -1
  158. package/esm2015/models/project-config.js +0 -3
  159. package/esm2015/public-api.js +0 -3
  160. package/esm2015/seniorsistemas-exclusion-process-component.js +0 -9
  161. package/esm2015/services/filter.service.js +0 -104
  162. package/esm2015/services/logical-delete-config.service.js +0 -29
  163. package/esm2015/services/logical-delete.service.js +0 -109
  164. package/esm5/enums/enum-exclusion-process-status.js +0 -8
  165. package/esm5/exclusion-details/exclusion-details.component.js +0 -235
  166. package/esm5/exclusion-details/exclusion-details.module.js +0 -31
  167. package/esm5/exclusion-details/index.js +0 -3
  168. package/esm5/exclusion-details/protocols/exclusion-details.js +0 -1
  169. package/esm5/exclusion-details/protocols/index.js +0 -2
  170. package/esm5/exclusion-details/protocols/show-details-information.js +0 -7
  171. package/esm5/logical-delete.module.js +0 -31
  172. package/esm5/models/exclusion-process-step-group.js +0 -1
  173. package/esm5/models/exclusion-process-step.js +0 -1
  174. package/esm5/models/exclusion-process.js +0 -1
  175. package/esm5/models/index.js +0 -1
  176. package/esm5/models/list-params.js +0 -1
  177. package/esm5/models/list-result.js +0 -1
  178. package/esm5/models/project-config.js +0 -3
  179. package/esm5/public-api.js +0 -3
  180. package/esm5/seniorsistemas-exclusion-process-component.js +0 -9
  181. package/esm5/services/filter.service.js +0 -109
  182. package/esm5/services/logical-delete-config.service.js +0 -30
  183. package/esm5/services/logical-delete.service.js +0 -112
  184. package/exclusion-details/exclusion-details.component.d.ts +0 -49
  185. package/exclusion-details/exclusion-details.module.d.ts +0 -2
  186. package/fesm2015/seniorsistemas-exclusion-process-component.js +0 -495
  187. package/fesm2015/seniorsistemas-exclusion-process-component.js.map +0 -1
  188. package/fesm5/seniorsistemas-exclusion-process-component.js +0 -530
  189. package/fesm5/seniorsistemas-exclusion-process-component.js.map +0 -1
  190. package/logical-delete.module.d.ts +0 -5
  191. package/seniorsistemas-exclusion-process-component.d.ts +0 -8
  192. package/seniorsistemas-exclusion-process-component.metadata.json +0 -1
  193. package/services/filter.service.d.ts +0 -19
  194. package/services/logical-delete-config.service.d.ts +0 -8
  195. package/services/logical-delete.service.d.ts +0 -20
  196. /package/{exclusion-details/index.d.ts → lib/src/exclusion-details/index.ts} +0 -0
  197. /package/{exclusion-details/protocols/index.d.ts → lib/src/exclusion-details/protocols/index.ts} +0 -0
  198. /package/{models/index.d.ts → lib/src/models/index.ts} +0 -0
  199. /package/{models/list-result.d.ts → lib/src/models/list-result.ts} +0 -0
  200. /package/{public-api.d.ts → lib/src/public-api.ts} +0 -0
@@ -0,0 +1,370 @@
1
+ #!/bin/bash
2
+
3
+ set -e # Exit at first error
4
+
5
+ echo "----------------------------------------------------------------------------------"
6
+ echo "[CI] Variáveis:"
7
+ echo "[CI] - SCI_VERSION_TAG_FRONTEND=$SCI_VERSION_TAG_FRONTEND"
8
+ echo "[CI] - BUCKET_NAME=$BUCKET_NAME"
9
+ echo "[CI] - CANNED_ACL=$CANNED_ACL"
10
+ echo "[CI] - TRANSLATIONS_USER=$TRANSLATIONS_USER"
11
+ echo "[CI] - TENANT=$TENANT"
12
+ echo "[CI] - DOMAIN=$DOMAIN"
13
+ echo "[CI] - SERVICE=$SERVICE"
14
+ echo "[CI] - SLACK_HOOK=$SLACK_HOOK"
15
+ echo "[CI] - BRANCH/TAG: $CI_COMMIT_REF_SLUG"
16
+ echo "[CI] - NOME DO PROJETO: $CI_PROJECT_NAME"
17
+ echo "[CI] - ID DO PROJETO: $CI_PROJECT_ID"
18
+ echo "----------------------------------------------------------------------------------"
19
+
20
+
21
+ MESSAGE_HELP="Caso tenha qualquer dúvida sobre o processo, consulte nossa Wiki - https://git.senior.com.br/engenharia/senior-ci/wikis/home"
22
+ CACHE_S3_ADDR="s3://senior-ci-cache-build-frontend/ci-cache"
23
+
24
+
25
+ # Import release helpers
26
+ . senior-ci/common/release-helpers.sh
27
+
28
+ # Import notification helpers
29
+ . senior-ci/common/notification-helpers.sh
30
+
31
+ # Senior CI Extensions
32
+ . senior-ci/common/senior-ci-extensions-helpers.sh
33
+
34
+ # Import npm struture helpers
35
+ . senior-ci/common/npm-helper.sh
36
+
37
+ # Import npm S3 helpers
38
+ . senior-ci/common/s3cache-helpers.sh
39
+
40
+ # Import docker helpers
41
+ . ./senior-ci/common/docker-helpers.sh
42
+
43
+ publish_frontend(){
44
+ : "${BUCKET_NAME:?BUCKET_NAME não configurado no cluster.}"
45
+ : "${CANNED_ACL:?CANNED_ACL não configurado no cluster.}"
46
+
47
+ APP_NAME=$(get_attribute "app\":")
48
+ DOMAIN=$(get_attribute "domain\":")
49
+ SERVICE=$(get_attribute "service\":")
50
+
51
+ echo "[CI] Verificando dados de cache"
52
+ if [[ "$VERSION" == *-SNAPSHOT ]] && [[ -d "./dist" ]] ; then
53
+ echo "[CI] Usando cache existente."
54
+ else
55
+ echo "[CI] Buildando o projeto novamente."
56
+ if [ "$DEPLOY_CDN" = "true" ]; then
57
+ npm run build --production -- --deploy-url $CLOUDFRONT_URL/$APP_NAME/$DOMAIN/$SERVICE/$VERSION/
58
+ else
59
+ npm run build --production
60
+ fi
61
+ fi
62
+
63
+ echo "[CI] Criando arquivo dist/frontend-info.json"
64
+ echo "console.log(JSON.stringify(require('./package.json').project, null, 2))" | node | sed "s,^{,{\n \"version\":\"$VERSION\"\,," > dist/frontend-info.json
65
+
66
+ echo "[CI] Iniciando publicação da versão $VERSION para o AWS S3"
67
+
68
+ tar -zcf frontend.tar.gz -C dist .
69
+ PROJECT=$(get_attribute "name\":")
70
+
71
+ echo "[CI] Publicando backup da versão $VERSION no bucket s3://senior-frontend/$PROJECT/$VERSION"
72
+ tar -zcf $PROJECT.tar.gz dist --transform s/dist/$PROJECT/
73
+ aws s3 cp $PROJECT.tar.gz s3://senior-frontend/$PROJECT/$VERSION/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
74
+
75
+ echo "[CI] Publicando a versão $VERSION no bucket s3://$BUCKET_NAME/$APP_NAME/$DOMAIN/$SERVICE/$VERSION onde ficará disponível para o Senior X Frontend Updater."
76
+ mv frontend.tar.gz ./dist/
77
+ aws s3 cp dist s3://$BUCKET_NAME/$APP_NAME/$DOMAIN/$SERVICE/$VERSION/ --recursive --acl $CANNED_ACL
78
+
79
+ if [ "$DEPLOY_CDN" = "true" ]; then
80
+ upload_to_cdn
81
+ fi
82
+ }
83
+
84
+ packing() {
85
+ getS3BuildCache
86
+
87
+ echo "[CI] Iniciando processo de publicação do projeto."
88
+
89
+ call_extension "before_packing"
90
+
91
+ if [[ -z "${NO_FRONTEND}" ]]; then
92
+ publish_frontend
93
+ fi
94
+
95
+ call_extension "after_packing"
96
+ }
97
+
98
+ # SUST-763 - Replicar os front-ends do Senior X no Gitlab.com para Customização pelos clientes
99
+ send_to_gitlab_cloud() {
100
+ echo "[CI] Publicando projeto no repositório do GitLab público - gitlab.com:senior-x-frontends"
101
+ if [ ! "$(git remote -v | grep git@gitlab.com:senior-x-frontends)" ]; then
102
+ echo "git remote add gitlabcloud git@gitlab.com:senior-x-frontends/$CI_PROJECT_NAME.git"
103
+ git remote add gitlabcloud git@gitlab.com:senior-x-frontends/$CI_PROJECT_NAME.git
104
+ fi
105
+
106
+ echo "git push -u gitlabcloud master"
107
+ git push -u gitlabcloud master
108
+
109
+ echo "git push -u gitlabcloud --tags -f"
110
+ git push -u gitlabcloud --tags -f
111
+
112
+ echo "[CI] Projeto publicado no repositório gitlab.com:senior-x-frontends com sucesso!"
113
+ }
114
+
115
+ build_to_cdn() {
116
+ APP_NAME=$(get_attribute "app\":")
117
+ DOMAIN=$(get_attribute "domain\":")
118
+ SERVICE=$(get_attribute "service\":")
119
+
120
+ BUILD_CI_COMMIT_TAG="${CI_COMMIT_TAG//-/.}"
121
+ BUILD_VERSION="${CI_COMMIT_TAG:-$CI_COMMIT_REF_SLUG-SNAPSHOT}"
122
+
123
+ npm run build -- --deploy-url $CLOUDFRONT_URL/$APP_NAME/$DOMAIN/$SERVICE/$BUILD_VERSION/
124
+ }
125
+
126
+ upload_to_cdn() {
127
+ CLOUDFRONT_PATH="/$APP_NAME/$DOMAIN/$SERVICE/$VERSION/"
128
+ BUCKET_PATH="s3://$CLOUFRONT_BUCKET$CLOUDFRONT_PATH"
129
+ echo "[CI] Publicando os assets/libs da versão $VERSION no bucket $BUCKET_PATH"
130
+ TEMP_AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
131
+ TEMP_AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
132
+
133
+ unset AWS_ACCESS_KEY_ID
134
+ unset AWS_SECRET_ACCESS_KEY
135
+
136
+ AWS_CREDENTIALS=$(aws sts assume-role --role-arn ${CLOUDFRONT_ROLE_ARN} --role-session-name "CDNFrontendUploader" --output json)
137
+
138
+ CLOUDFRONT_ACCESS_KEY_ID=$(echo $AWS_CREDENTIALS|jq '.Credentials.AccessKeyId'|tr -d '"')
139
+ CLOUDFRONT_SECRET_ACCESS_KEY=$(echo $AWS_CREDENTIALS|jq '.Credentials.SecretAccessKey'|tr -d '"')
140
+ CLOUDFRONT_SESSION_TOKEN=$(echo $AWS_CREDENTIALS|jq '.Credentials.SessionToken'|tr -d '"')
141
+
142
+ export AWS_ACCESS_KEY_ID=$CLOUDFRONT_ACCESS_KEY_ID
143
+ export AWS_SECRET_ACCESS_KEY=$CLOUDFRONT_SECRET_ACCESS_KEY
144
+ export AWS_SESSION_TOKEN=$CLOUDFRONT_SESSION_TOKEN
145
+
146
+ aws s3 cp dist "$BUCKET_PATH" --recursive --exclude frontend.tar.gz
147
+ echo "[CI] Invalidando caminho $CLOUDFRONT_PATH na distribuição $CLOUFRONT_DISTRIBUTION_ID "
148
+ aws cloudfront create-invalidation --distribution-id $CLOUFRONT_DISTRIBUTION_ID --paths "$CLOUDFRONT_PATH*"
149
+
150
+ export AWS_ACCESS_KEY_ID=$TEMP_AWS_ACCESS_KEY_ID
151
+ export AWS_SECRET_ACCESS_KEY=$TEMP_AWS_SECRET_ACCESS_KEY
152
+ }
153
+
154
+ getopts "basrpdcxt" op;
155
+ case "$op" in
156
+
157
+ b) echo "[CI] Executando compilação e validação de formatação do código"
158
+ python3 senior-ci/common/validations/validate_issues.py
159
+
160
+ call_extension "before_build"
161
+ if [ "$DEPLOY_CDN" = "true" ]; then
162
+ build_to_cdn
163
+ else
164
+ npm run build
165
+ fi
166
+ npm run lint --if-present
167
+
168
+ createS3BuildCache dist
169
+
170
+ call_extension "after_build"
171
+ ;;
172
+
173
+ a) echo "[CI] Realizando release: TIMESTAMP SNAPSHOT"
174
+ call_extension "before_release_snapshot"
175
+ TS=$(date +"%s")
176
+ VERSION="$2-$TS-SNAPSHOT"
177
+ packing
178
+ call_extension "after_release_snapshot"
179
+ ;;
180
+
181
+ s) echo "[CI] Realizando release: SNAPSHOT"
182
+ call_extension "before_release_snapshot"
183
+ VERSION="$2-SNAPSHOT"
184
+ packing
185
+ call_extension "after_release_snapshot"
186
+ ;;
187
+
188
+ r) echo "[CI] Realizando release: $2"
189
+ python3 senior-ci/common/validations/validate_issues.py
190
+
191
+ unshallow_repo
192
+
193
+ get_next_version $2
194
+
195
+ call_extension "before_release"
196
+
197
+ create_release_branch
198
+
199
+ npm version --no-git-tag-version "$VERSION"
200
+ [[ -f bower.json ]] && sed -i -E "s/(\"version\":[[:space:]]*\").+(\")/\1${VERSION}\2/g" bower.json
201
+
202
+ call_extension "before_change_changelog"
203
+
204
+ update_changelog
205
+
206
+ call_extension "after_change_changelog"
207
+
208
+ create_release_tag
209
+
210
+ send_to_gitlab_cloud
211
+
212
+ call_extension "after_release"
213
+
214
+ echo "[CI] Criação da release versão $VERSION realizado com sucesso. Execute o job 'package' para publicar esta versão no AWS S3."
215
+
216
+ notify_release_teams_channel
217
+ ;;
218
+
219
+ p) echo "[CI] Publicação da versão"
220
+
221
+ call_extension "before_packaging"
222
+
223
+ VERSION=$(git describe --exact-match --tags | sed "s/-\([[:digit:]]\)/\.\1/g")
224
+ if [ -z "${VERSION}" ]; then
225
+ VERSION=$(get_attribute "version\":")
226
+ fi
227
+
228
+ packing
229
+
230
+ USER_DEPLOY_MAIL="${GITLAB_USER_EMAIL%@senior.com.br}"
231
+ MESSAGE_DEPLOY="O usuário $USER_DEPLOY_MAIL liberou a versão $VERSION do projeto $CI_PROJECT_NAME. Changelog: $CI_PROJECT_URL/blob/$CI_COMMIT_REF_NAME/CHANGELOG.md"
232
+
233
+ call_extension "after_packaging"
234
+
235
+ notify_text_teams_channel "$MESSAGE_DEPLOY"
236
+
237
+ echo "[CI] Versão $VERSION publicada no AWS S3 com sucesso!"
238
+ ;;
239
+
240
+ d) echo "[CI] Iniciando deploy"
241
+
242
+ call_extension "before_deploy"
243
+ : "${CI_ENVIRONMENT_URL:?Configure as propriedades name e url do grupo environment no .gitlab-ci.yml. $MESSAGE_HELP}"
244
+ : "${DEPLOY_USERNAME:?Configure a variável DEPLOY_USERNAME no cluster. $MESSAGE_HELP}"
245
+ : "${DEPLOY_PASSWORD:?Configure a variável DEPLOY_PASSWORD no cluster. $MESSAGE_HELP}"
246
+
247
+ APP_NAME=$(get_attribute "app\":")
248
+ DOMAIN_NAME=$(get_attribute "domain\":")
249
+ SERVICE_NAME=$(get_attribute "service\":")
250
+
251
+ : "${APP_NAME:?Adicione no package.json a chave app com o nome da sua aplicação. $MESSAGE_HELP}"
252
+ : "${DOMAIN_NAME:?Adicione no package.json a chave domain com o nome do domínio. $MESSAGE_HELP}"
253
+ : "${SERVICE_NAME:?Adicione no package.json a chave service com o nome do serviço. $MESSAGE_HELP}"
254
+
255
+ CI_COMMIT_TAG="${CI_COMMIT_TAG//-/.}"
256
+ VERSION="${CI_COMMIT_TAG:-$CI_COMMIT_REF_SLUG-SNAPSHOT}"
257
+
258
+ echo "[CI] Realizando login na Senior X Platform - Ambiente $CI_ENVIRONMENT_URL"
259
+ TOKEN=$(curl -s -X POST "$CI_ENVIRONMENT_URL/platform/authentication/actions/login" -H "Content-Type: application/json" --insecure -d '{ "username": "'$DEPLOY_USERNAME'", "password": "'$DEPLOY_PASSWORD'"}' ${CI_DEBUG_TRACE:+--trace-ascii /dev/stderr} | jq --raw-output '.jsonToken | fromjson | "Authorization: " + .token_type + " " + .access_token')
260
+
261
+ DEPLOY_INFO=$(curl -s "$CI_ENVIRONMENT_URL/platform/frontend_updater/queries/listDeploy" --insecure -H "$TOKEN" ${CI_DEBUG_TRACE:+--trace-ascii /dev/stderr} | jq --arg APP_NAME "$APP_NAME" --arg DOMAIN_NAME "$DOMAIN_NAME" --arg SERVICE_NAME "$SERVICE_NAME" '.content | map(select(.appName == $APP_NAME and .domainName == $DOMAIN_NAME and .serviceName == $SERVICE_NAME)) | first')
262
+
263
+ if [[ -z "$DEPLOY_INFO" || $DEPLOY_INFO == null ]]
264
+ then
265
+ : "${MENU_MODULE_ID:?Id do módulo de menu não definido. Não será possível implantar o frontend. $MESSAGE_HELP}"
266
+
267
+ MENU_MODULE_NAME=$(curl -s "$CI_ENVIRONMENT_URL/platform/menu/queries/listModules?mapCustomModules=false&mapFrontendsConfiguration=false" -H "Content-Type: application/json" --insecure -H "$TOKEN" | jq -r '.modules[] | select(.id == "'$MENU_MODULE_ID'") | .name')
268
+
269
+ : "${MENU_MODULE_NAME:?Módulo com o id $MENU_MODULE_ID não encontrado. Não será possível implantar o frontend. $MESSAGE_HELP}"
270
+
271
+ echo "[CI] Frontend $APP_NAME.$DOMAIN_NAME.$SERVICE_NAME#$VERSION não encontrado no ambiente. Realizando implantação com o Frontend Updater ($CI_ENVIRONMENT_URL/platform/frontend_updater) no menu $MENU_MODULE_NAME"
272
+
273
+ ORIGIN_ID=$(curl -s "$CI_ENVIRONMENT_URL/platform/frontend_updater/queries/listOrigins" -H "Content-Type: application/json" --insecure -H "$TOKEN" | jq '.content | .[] | select(.name == "Plataforma") | .id')
274
+ TARGET_ID=$(curl -s "$CI_ENVIRONMENT_URL/platform/frontend_updater/queries/listTargets" -H "Content-Type: application/json" --insecure -H "$TOKEN" | jq '.content | .[0] | .id')
275
+
276
+ DEPLOY_ALIAS="$APP_NAME/$DOMAIN_NAME/$SERVICE_NAME"
277
+
278
+ curl -s -X POST "$CI_ENVIRONMENT_URL/platform/frontend_updater/actions/insertDeploy" -H "$TOKEN" -H "Content-Type: application/json" --insecure -d '{ "originId": '$ORIGIN_ID', "targetId": '$TARGET_ID', "appName": "'$APP_NAME'", "domainName": "'$DOMAIN_NAME'", "serviceName": "'$SERVICE_NAME'", "version": "'$VERSION'", "alias": "'$DEPLOY_ALIAS'", "moduleId": "'$MENU_MODULE_ID'"}' ${CI_DEBUG_TRACE:+--trace-ascii /dev/stderr} > /dev/null
279
+ else
280
+ echo "[CI] Atualizando frontend $APP_NAME.$DOMAIN_NAME.$SERVICE_NAME#$VERSION com o Frontend Updater - $CI_ENVIRONMENT_URL/platform/frontend_updater/"
281
+
282
+ ORIGIN_ID=$(echo "$DEPLOY_INFO" | jq --raw-output '.origin.id')
283
+ DEPLOY_ID=$(echo "$DEPLOY_INFO" | jq --raw-output '.deployId')
284
+ DEPLOY_ALIAS=$(echo "$DEPLOY_INFO" | jq --raw-output '.alias')
285
+
286
+ # Tecnicamente, não precisaria atualizar a origem para realizar o deploy. É feito só para a versão aparecer corretamente no frontend.
287
+ curl -s -X POST "$CI_ENVIRONMENT_URL/platform/frontend_updater/signals/updateFrontends" --insecure -H "$TOKEN" -H "Content-Type: application/json" -d '{ "originId": "'$ORIGIN_ID'" }' ${CI_DEBUG_TRACE:+--trace-ascii /dev/stderr} > /dev/null
288
+ curl -s -X POST "$CI_ENVIRONMENT_URL/platform/frontend_updater/actions/updateDeploy" --insecure -H "$TOKEN" -H "Content-Type: application/json" -d '{ "deployId": "'$DEPLOY_ID'", "version": "'$VERSION'" }' ${CI_DEBUG_TRACE:+--trace-ascii /dev/stderr} > /dev/null
289
+ fi
290
+
291
+ USER_DEPLOY_MAIL="${GITLAB_USER_EMAIL%@senior.com.br}"
292
+ MESSAGE_DEPLOY="O usuário $USER_DEPLOY_MAIL alterou o frontend $APP_NAME.$DOMAIN_NAME.$SERVICE_NAME ($CI_PROJECT_NAME) para a versão <$CI_PROJECT_URL/blob/$CI_COMMIT_REF_NAME/CHANGELOG.md#anchor-$VERSION_WITHOUT_DOTS|$VERSION>."
293
+
294
+ call_extension "after_deploy"
295
+
296
+ notify_text_teams_channel "$MESSAGE_DEPLOY"
297
+
298
+ echo "[CI] Deploy realizado com sucesso!"
299
+ ;;
300
+
301
+ c) echo "[CI] Publicação da versão"
302
+
303
+ unset AWS_ACCESS_KEY_ID
304
+ unset AWS_SECRET_ACCESS_KEY
305
+
306
+ : "${SCI_CDN_ACCOUNT_ID:?Configure a variável SCI_CDN_ACCOUNT_ID no projeto. $MESSAGE_HELP}"
307
+ : "${SCI_CDN_BUCKET_NAME:?Configure a variável SCI_CDN_BUCKET_NAME no projeto. $MESSAGE_HELP}"
308
+ : "${SCI_CDN_DISTRIBUTION_ID:?Configure a variável SCI_CDN_DISTRIBUTION_ID no projeto. $MESSAGE_HELP}"
309
+
310
+ AWS_CREDENTIALS=`aws sts assume-role --role-arn arn:aws:iam::$SCI_CDN_ACCOUNT_ID:role/CDNFrontendUploader --role-session-name "CDNFrontendUploader" --output json`
311
+
312
+ CDN_ACCESS_KEY_ID=`echo $AWS_CREDENTIALS | jq -r '.Credentials.AccessKeyId'`
313
+ CDN_SECRET_ACCESS_KEY=`echo $AWS_CREDENTIALS | jq -r '.Credentials.SecretAccessKey'`
314
+ CDN_SESSION_TOKEN=`echo $AWS_CREDENTIALS | jq -r '.Credentials.SessionToken'`
315
+
316
+ export AWS_ACCESS_KEY_ID=$CDN_ACCESS_KEY_ID
317
+ export AWS_SECRET_ACCESS_KEY=$CDN_SECRET_ACCESS_KEY
318
+ export AWS_SESSION_TOKEN=$CDN_SESSION_TOKEN
319
+
320
+ call_extension "before_packaging"
321
+
322
+ if [[ -v "$CI_COMMIT_TAG" ]];
323
+ then
324
+ VERSION="${CI_COMMIT_TAG/v/}"
325
+ VERSION="${VERSION/-/.}"
326
+ else
327
+ VERSION="$CI_COMMIT_REF_SLUG-SNAPSHOT"
328
+ fi
329
+
330
+ echo "[CI] Buildando o projeto para produção."
331
+ npm run build --production
332
+
333
+ echo "[CI] Publicando a versão $VERSION no bucket $SCI_CDN_BUCKET_NAME"
334
+ aws s3 sync ./dist s3://$SCI_CDN_BUCKET_NAME/ --acl=public-read --delete
335
+
336
+ echo "[CI] Invalidando index.html no cdn $SCI_CDN_DISTRIBUTION_ID"
337
+ aws cloudfront create-invalidation --distribution-id $SCI_CDN_DISTRIBUTION_ID --paths /index.html >> null
338
+
339
+ USER_DEPLOY_MAIL="${GITLAB_USER_EMAIL%@senior.com.br}"
340
+ MESSAGE_DEPLOY="O usuário $USER_DEPLOY_MAIL liberou a versão $VERSION do projeto $CI_PROJECT_NAME. Changelog: $CI_PROJECT_URL/blob/$CI_COMMIT_REF_NAME/CHANGELOG.md"
341
+
342
+ call_extension "after_packaging"
343
+
344
+ notify_text_teams_channel "$MESSAGE_DEPLOY"
345
+
346
+ echo "[CI] Versão $VERSION publicada no AWS S3 com sucesso!"
347
+ ;;
348
+
349
+ x) echo "[CI] Realizando validação de testes e análise no SonarQube"
350
+ call_extension "before_build"
351
+
352
+ SKIP_BUILD=$(python3 senior-ci/common/validations/buildable_project.py)
353
+ echo $SKIP_BUILD | sed 's@False@@g'
354
+
355
+ if [ "$SKIP_BUILD" = "False" ]; then
356
+
357
+ npm test
358
+
359
+ fi
360
+
361
+ call_extension "after_build"
362
+
363
+ python3 senior-ci/ci/sonar_scanner.py -s $SKIP_BUILD
364
+ ;;
365
+
366
+ t) echo "[CI] Iniciando processo de Release Translations"
367
+ senior-ci/frontend/npm/release-translations.sh
368
+ ;;
369
+
370
+ esac
@@ -0,0 +1,164 @@
1
+ #!/bin/bash
2
+
3
+ LOCALE_DIR="${TRANSLATIONS_DIR:-src/locale}"
4
+ DEFAULT_LANG=pt-BR.json
5
+ DEFAULT_LANG_FILE=$LOCALE_DIR/$DEFAULT_LANG
6
+ LOCALES=$(ls $LOCALE_DIR | grep -v "$DEFAULT_LANG" | grep '\.json$')
7
+ PRETTY_LOCALES=$(ls $LOCALE_DIR -1 | grep -v "$DEFAULT_LANG" | grep '\.json$' | tr '\n' ' ')
8
+
9
+ upload_to_translation_hub() {
10
+
11
+ CURRENT_LANG_FILE=$1
12
+ LANG_DEF=$2
13
+
14
+ echo "[CI] Sending $CURRENT_LANG_FILE to Translation Hub"
15
+ JSON=$(cat $CURRENT_LANG_FILE | jq --compact-output --raw-output '.')
16
+
17
+ echo "[CI] Requesting storage to JackRabbit token - $TOKEN"
18
+
19
+ JACKRABBIT_RESPONSE=$(curl -s -k "$CI_ENVIRONMENT_URL/platform/translation_hub/queries/requestImportTranslations" -H "Pragma: no-cache" -H "Cache-Control: no-cache" -H "Accept-Encoding: gzip, deflate, br" -H "Accept: application/json, text/plain, */*" -H "$TOKEN" -H "Connection: keep-alive" --compressed)
20
+ PROJECT_ID=$(echo $JACKRABBIT_RESPONSE | jq --raw-output '.id')
21
+ URL=$(echo $JACKRABBIT_RESPONSE | jq --raw-output '.url')
22
+
23
+
24
+ echo "[CI] Done. Storage URL: $URL"
25
+ printf "\r\n"
26
+ printf "\r\n"
27
+
28
+ echo "[CI] Sending translation file to JackRabbit"
29
+ FILE_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" -k "$URL" -X PUT --data-binary "$JSON" --compressed)
30
+ printf "Sent! Response: \r\n"
31
+ echo "$FILE_RESPONSE"
32
+
33
+ echo "[CI] Sending translation metadata to Translation Hub"
34
+
35
+ LANG_META_JSON=$(jq -n --compact-output --arg id $PROJECT_ID --arg lang $LANG_DEF '{"id":$id,"language":$lang,"format":"FLAT_JSON"}')
36
+ printf "Metadata to be sent: \r\n"
37
+ echo "$LANG_META_JSON"
38
+
39
+ echo "..."
40
+
41
+ META_RESPONSE=$(curl -k -X POST "$CI_ENVIRONMENT_URL/platform/translation_hub/signals/importTranslations" -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept: application/json, text/plain, */*' -H 'Content-Type: application/json;charset=UTF-8' -H "$TOKEN" -H 'Connection: keep-alive' --data-binary "$LANG_META_JSON" --compressed)
42
+ printf "Sent! Response: \r\n"
43
+ echo "$META_RESPONSE"
44
+ }
45
+
46
+
47
+
48
+ echo ""
49
+ echo "[CI] Checking TRANSLATIONS_USER, TRANSLATIONS_PASS, TENANT, DOMAIN and SERVICE project variables existance"
50
+ [[ -z "$TRANSLATIONS_USER" ]] && echo "Variable TRANSLATIONS_USER was not found. Please create a variable named TRANSLATIONS_USER in the project settings and try again." && exit 1
51
+ [[ -z "$TRANSLATIONS_PASS" ]] && echo "Variable TRANSLATIONS_PASS was not found. Please create a variable named TRANSLATIONS_PASS in the project settings and try again." && exit 1
52
+ [[ -z "$TENANT" ]] && echo "Variable TENANT was not found. Please create a variable named TENANT in the project settings and try again." && exit 1
53
+ [[ -z "$DOMAIN" ]] && echo "Variable DOMAIN was not found. Please create a variable named DOMAIN in the project settings and try again." && exit 1
54
+ [[ -z "$SERVICE" ]] && echo "Variable SERVICE was not found. Please create a variable named SERVICE in the project settings and try again." && exit 1
55
+ echo "[CI] Found TRANSLATIONS_USER, TRANSLATIONS_PASS, TENANT, DOMAIN and SERVICE variables! TRANSLATIONS_USER - '$TRANSLATIONS_USER' | TENANT - '$TENANT' | DOMAIN - '$DOMAIN' | SERVICE = '$SERVICE' existance"
56
+ echo ""
57
+
58
+ echo ""
59
+ echo "[CI] Checking if default locale directory exists ($LOCALE_DIR) and if default lang file exists ($DEFAULT_LANG_FILE)"
60
+ [[ ! -d "$LOCALE_DIR" ]] && echo "Directory $LOCALE_DIR was not found, cannot Release Translations." && exit 1
61
+ [[ ! -e "$DEFAULT_LANG_FILE" ]] && echo "File $DEFAULT_LANG_FILE was not found, cannot Release Translations." && exit 1
62
+ echo "[CI] Successfully checked default locale directory ($LOCALE_DIR) and default language file ($DEFAULT_LANG_FILE) existance. Everything is looking good."
63
+ echo ""
64
+ printf "\r\n"
65
+ printf "\r\n"
66
+
67
+ echo "[CI] Starting Release Translations"
68
+ printf "\r\n"
69
+ printf "\r\n"
70
+
71
+
72
+ echo "[CI] Download fetch-translations repo"
73
+ curl --output archive.tar.gz --header "PRIVATE-TOKEN: gewEZA_iVSWthG_HouBt" "https://git.senior.com.br/api/v4/projects/1401/repository/archive.tar.gz"
74
+
75
+ echo "[CI] Extract fetch-translations"
76
+ mkdir -p fetch-translations && tar xf archive.tar.gz -C fetch-translations --strip-components 1
77
+
78
+ echo "[CI] Install fetch-translations dependencies"
79
+ cd fetch-translations
80
+ echo "[CI] Node - $(which node) - $(node --version)"
81
+ echo "[CI] NPM - $(which npm) - $(npm --version)"
82
+ npm install
83
+ cd ..
84
+
85
+ echo "[CI] Logging into Senior X Platform"
86
+
87
+ TOKEN=$(curl -s -k -X POST "$CI_ENVIRONMENT_URL/platform/authentication/actions/login" -H "Content-Type: application/json" --insecure -d '{ "username": "'$TRANSLATIONS_USER'", "password": "'$TRANSLATIONS_PASS'"}' ${CI_DEBUG_TRACE:+--trace-ascii /dev/stderr} | jq --raw-output '.jsonToken | fromjson | "Authorization: " + .token_type + " " + .access_token')
88
+
89
+ echo "[CI] Successfully logged in."
90
+ printf "\r\n"
91
+ printf "\r\n"
92
+
93
+ echo "Creating release branch"
94
+ git fetch --all --tags --prune
95
+ git checkout develop
96
+ git reset --hard origin/develop
97
+
98
+ TIMESTAMP=$(date +"%Y%m%d%H%M%S")
99
+ BRANCH_NAME=release/translations-$TIMESTAMP
100
+ git checkout -B $BRANCH_NAME
101
+ echo "[CI] Created branch $BRANCH_NAME from develop"
102
+ echo ""
103
+ echo "[CI] Searching for missing keys in the following files: $PRETTY_LOCALES"
104
+
105
+ for LANG in $LOCALES
106
+ do
107
+ LANG_DEF="${LANG%.*}"
108
+ CURRENT_LANG_FILE=$LOCALE_DIR/$LANG
109
+
110
+ fetch-translations/index.js --environment=$CI_ENVIRONMENT_NAME --tenant=$TENANT --domain=$DOMAIN --service=$SERVICE --lang=$LANG_DEF | jq '.' > $CURRENT_LANG_FILE
111
+
112
+ KEYS_MATCH=$(jq -n --slurpfile PT $DEFAULT_LANG_FILE --slurpfile LN $CURRENT_LANG_FILE '$PT | .[0] | keys as $PT | $LN | .[0] | keys as $LN | $LN == $PT')
113
+ echo "[CI] Checking language file $CURRENT_LANG_FILE"
114
+ echo "[CI] Q: Does $DEFAULT_LANG_FILE have the same keys as $CURRENT_LANG_FILE?"
115
+ echo "[CI] A: $KEYS_MATCH"
116
+ printf "\r\n"
117
+
118
+ if [ "$KEYS_MATCH" != "true" ];
119
+ then
120
+
121
+ echo "[CI] Merging missing keys into $CURRENT_LANG_FILE"
122
+ CURRENT_LANG_MERGED_CONTENT=$(jq -n --slurpfile PT $DEFAULT_LANG_FILE --slurpfile LN $CURRENT_LANG_FILE '$PT | .[0] as $PT | keys as $PT_KEYS | $LN | .[0] as $LN | keys as $LN_KEYS | $PT + $LN as $MERGED | $MERGED')
123
+ echo "$CURRENT_LANG_MERGED_CONTENT" | jq '.' > $CURRENT_LANG_FILE
124
+
125
+ echo "[CI] Successfully updated $CURRENT_LANG_FILE"
126
+ printf "\r\n"
127
+ printf "\r\n"
128
+
129
+ upload_to_translation_hub $CURRENT_LANG_FILE $LANG_DEF
130
+
131
+ git commit -a -m "Atualizando arquivo de tradução $CURRENT_LANG_FILE" -m "[skip ci]" -m "[auto release]"
132
+
133
+ SHOULD_PUSH=TRUE
134
+ else
135
+ echo "[CI] Files $CURRENT_LANG_FILE and $DEFAULT_LANG_FILE have the same keys. Nothing to do here."
136
+ fi
137
+ done
138
+
139
+ echo "[CI] Publishing default lang file to Translation Hub"
140
+
141
+ DEFAULT_LANG_DEF="${DEFAULT_LANG%.*}"
142
+ upload_to_translation_hub $DEFAULT_LANG_FILE $DEFAULT_LANG_DEF
143
+
144
+ if [ "$SHOULD_PUSH" = "TRUE" ];
145
+ then
146
+ CI_REPOSITORY_URL_FOR_PUSH=$(echo "$CI_REPOSITORY_URL" | sed -e "s|.*@\(.*\)|git@\1|" -e "s|/|:|" )
147
+ git remote set-url --push origin "$CI_REPOSITORY_URL_FOR_PUSH"
148
+
149
+ echo "[CI] Preparing to push changes"
150
+
151
+ git status
152
+
153
+ echo "[CI] Checking out develop branch"
154
+ git checkout develop
155
+
156
+ echo "[CI] Merging banch $BRANCH_NAME into develop"
157
+ git merge $BRANCH_NAME
158
+ git status
159
+
160
+ echo "[CI] Pushing changes"
161
+ git push
162
+ fi
163
+
164
+ echo "[CI] Successfully updated translations!"
@@ -0,0 +1,56 @@
1
+ import sys
2
+
3
+ sys.path.append("./senior-ci")
4
+
5
+ from common import (
6
+ ExitCode,
7
+ exec_command_and_return,
8
+ exit_message,
9
+ get_env_variable,
10
+ get_env_variable_required,
11
+ get_version_from_gitlab,
12
+ )
13
+ from common.extensions import Extensions
14
+ from common.helm_helpers import add_nexus_repo, get_version
15
+
16
+ add_nexus_repo()
17
+
18
+ nexus_username = get_env_variable_required("NEXUS_USERNAME")
19
+ nexus_password = get_env_variable_required("NEXUS_PASSWORD")
20
+
21
+ project_name = get_env_variable_required("CI_PROJECT_NAME")
22
+
23
+ service_namespace = get_env_variable_required("SCI_NAMESPACE")
24
+ service_name = get_env_variable("SCI_SVC_NAME", project_name)
25
+
26
+ chart_version = get_env_variable("SCI_CHART_VERSION")
27
+
28
+ service_version = get_version_from_gitlab()
29
+
30
+ extensions = Extensions()
31
+
32
+ extensions.before_deploy()
33
+
34
+ version_string = f"--version {chart_version}" if chart_version else ""
35
+
36
+
37
+ helm_update_command_result = exec_command_and_return("helm repo update")
38
+
39
+ if helm_update_command_result.exit_code == ExitCode.ERROR:
40
+ exit_message(
41
+ "Não foi possível realizar o deploy. "
42
+ "Verifique nos logs acima a possível causa"
43
+ )
44
+
45
+ helm_upgrade_command_result = exec_command_and_return(
46
+ f"helm upgrade --install -n {service_namespace} {service_name} nexus-senior/{service_name} "
47
+ f"{version_string} --set image.tag={service_version}"
48
+ )
49
+
50
+ if helm_upgrade_command_result.exit_code == ExitCode.ERROR:
51
+ exit_message(
52
+ "Não foi possível realizar o deploy. "
53
+ "Verifique nos logs acima a possível causa"
54
+ )
55
+
56
+ extensions.after_deploy()
@@ -0,0 +1,41 @@
1
+ import sys
2
+
3
+ sys.path.append("./senior-ci")
4
+
5
+ from common import (
6
+ exec_command,
7
+ exec_command_without_print,
8
+ exit_message,
9
+ get_env_variable_required,
10
+ )
11
+ from common.extensions import Extensions
12
+ from common.helm_helpers import add_nexus_repo, get_version
13
+
14
+ add_nexus_repo()
15
+
16
+ chart_name = get_env_variable_required("SCI_CHART_NAME")
17
+
18
+ nexus_username = get_env_variable_required("NEXUS_USERNAME")
19
+ nexus_password = get_env_variable_required("NEXUS_PASSWORD")
20
+
21
+ chart_path = f"./charts/{chart_name}"
22
+
23
+ version = get_version(chart_path)
24
+
25
+ if not version:
26
+ exit_message(f"Não foi possível encontrar a versão do chart {chart_name}")
27
+
28
+ exec_command_without_print(
29
+ f"helm nexus-push nexus-senior login -u {nexus_username} -p {nexus_password}"
30
+ )
31
+
32
+ extensions = Extensions()
33
+
34
+ extensions.before_packaging()
35
+
36
+ exec_command(f"helm package ./charts/{chart_name} --version {version}")
37
+ exec_command(
38
+ f"helm nexus-push nexus-senior {chart_name}-{version}.tgz -u {nexus_username} -p ''"
39
+ )
40
+
41
+ extensions.after_packaging()