@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.
- package/.editorconfig +19 -0
- package/.gitlab-ci.yml +74 -0
- package/.prettierrc +8 -0
- package/.senior-ci-extensions.sh +21 -0
- package/.vscode/settings.json +6 -0
- package/CHANGELOG.md +22 -0
- package/README.md +16 -0
- package/angular.json +144 -0
- package/archive.tar.gz +0 -0
- package/e2e/app.e2e-spec.ts +14 -0
- package/e2e/app.po.ts +11 -0
- package/e2e/tsconfig.e2e.json +14 -0
- package/karma.conf.js +53 -0
- package/lib/.browserslistrc +5 -0
- package/lib/package.json +19 -0
- package/{enums/enum-exclusion-process-status.d.ts → lib/src/enums/enum-exclusion-process-status.ts} +1 -1
- package/lib/src/exclusion-details/exclusion-details.component.html +84 -0
- package/lib/src/exclusion-details/exclusion-details.component.scss +47 -0
- package/lib/src/exclusion-details/exclusion-details.component.spec.ts +171 -0
- package/lib/src/exclusion-details/exclusion-details.component.ts +235 -0
- package/lib/src/exclusion-details/exclusion-details.module.ts +23 -0
- package/{exclusion-details/protocols/exclusion-details.d.ts → lib/src/exclusion-details/protocols/exclusion-details.ts} +1 -0
- package/{exclusion-details/protocols/show-details-information.d.ts → lib/src/exclusion-details/protocols/show-details-information.ts} +1 -1
- package/lib/src/exclusions-list/exclusions-list.component.html +157 -0
- package/lib/src/exclusions-list/exclusions-list.component.spec.ts +526 -0
- package/lib/src/exclusions-list/exclusions-list.component.ts +335 -0
- package/lib/src/exclusions-list/exclusions-list.module.ts +52 -0
- package/lib/src/exclusions-list/exclusions-list.routing.ts +89 -0
- package/lib/src/exclusions-list/index.ts +2 -0
- package/lib/src/logical-delete.module.ts +22 -0
- package/{models/exclusion-process-step-group.d.ts → lib/src/models/exclusion-process-step-group.ts} +1 -0
- package/{models/exclusion-process-step.d.ts → lib/src/models/exclusion-process-step.ts} +1 -0
- package/{models/exclusion-process.d.ts → lib/src/models/exclusion-process.ts} +1 -0
- package/{models/list-params.d.ts → lib/src/models/list-params.ts} +1 -0
- package/{models/project-config.d.ts → lib/src/models/project-config.ts} +3 -1
- package/lib/src/services/filter.service.spec.ts +290 -0
- package/lib/src/services/filter.service.ts +109 -0
- package/lib/src/services/index.ts +1 -0
- package/lib/src/services/logical-delete-config.service.spec.ts +59 -0
- package/lib/src/services/logical-delete-config.service.ts +25 -0
- package/lib/src/services/logical-delete.service.spec.ts +322 -0
- package/lib/src/services/logical-delete.service.ts +122 -0
- package/lib/test.ts +14 -0
- package/lib/tsconfig.lib.json +19 -0
- package/lib/tsconfig.lib.prod.json +6 -0
- package/lib/tsconfig.spec.json +12 -0
- package/lib/tslint.json +19 -0
- package/package.json +59 -18
- package/protractor.conf.js +28 -0
- package/senior-ci/.devcontainer/Dockerfile +27 -0
- package/senior-ci/.devcontainer/devcontainer.json +71 -0
- package/senior-ci/.editorconfig +14 -0
- package/senior-ci/.gitattributes +5 -0
- package/senior-ci/.gitlab-ci.yml +53 -0
- package/senior-ci/.pylintrc +562 -0
- package/senior-ci/.vscode/launch.json +102 -0
- package/senior-ci/CHANGELOG.md +1564 -0
- package/senior-ci/CONTRIBUTING.md +31 -0
- package/senior-ci/README.md +26 -0
- package/senior-ci/ci/ci.sh +74 -0
- package/senior-ci/ci/sonar_scanner.py +48 -0
- package/senior-ci/common/__init__.py +250 -0
- package/senior-ci/common/default-files/pom.xml +10 -0
- package/senior-ci/common/docker-helpers.sh +57 -0
- package/senior-ci/common/extensions.py +88 -0
- package/senior-ci/common/flutter-helpers.sh +3 -0
- package/senior-ci/common/getopt_helper.py +168 -0
- package/senior-ci/common/graphql_client.py +40 -0
- package/senior-ci/common/helm_helpers.py +40 -0
- package/senior-ci/common/notification-helpers.sh +15 -0
- package/senior-ci/common/npm-helper.sh +4 -0
- package/senior-ci/common/parallel-helper.sh +8 -0
- package/senior-ci/common/release-helpers.sh +196 -0
- package/senior-ci/common/s3cache-helpers.sh +47 -0
- package/senior-ci/common/senior-ci-extensions-helpers.sh +15 -0
- package/senior-ci/common/sonar_helper.py +203 -0
- package/senior-ci/common/validations/buildable_project.py +61 -0
- package/senior-ci/common/validations/check_deprecated_primitives.py +49 -0
- package/senior-ci/common/validations/check_project_path.py +40 -0
- package/senior-ci/common/validations/check_sonar_config_files.py +41 -0
- package/senior-ci/common/validations/check_tags.py +41 -0
- package/senior-ci/common/validations/validate_changelog.py +151 -0
- package/senior-ci/common/validations/validate_issues.py +320 -0
- package/senior-ci/docker/build.sh +18 -0
- package/senior-ci/docker/config-host.sh +29 -0
- package/senior-ci/docker/deploy-service.sh +79 -0
- package/senior-ci/docker/push.sh +22 -0
- package/senior-ci/frontend/npm/bibliotecas/ci.sh +149 -0
- package/senior-ci/frontend/npm/ci.sh +370 -0
- package/senior-ci/frontend/npm/release-translations.sh +164 -0
- package/senior-ci/helm/deploy.py +56 -0
- package/senior-ci/helm/publish.py +41 -0
- package/senior-ci/hook/release_notification.sh +88 -0
- package/senior-ci/hook/text_notification.sh +10 -0
- package/senior-ci/java/bibliotecas/ci.sh +215 -0
- package/senior-ci/java/sdl/ci.sh +372 -0
- package/senior-ci/java/sdl/scripts/hotfix.sh +78 -0
- package/senior-ci/mobile/flutter/apps/__main__.py +5 -0
- package/senior-ci/mobile/flutter/apps/ci.py +193 -0
- package/senior-ci/mobile/flutter/libs/__main__.py +5 -0
- package/senior-ci/mobile/flutter/libs/ci.py +178 -0
- package/senior-ci/mobile/flutter/scripts/release.sh +54 -0
- package/senior-ci/release-candidate/backend/get_version.sh +64 -0
- package/senior-ci/release-candidate/close_branch.sh +113 -0
- package/senior-ci/release-candidate/common/create_hotfix.sh +28 -0
- package/senior-ci/release-candidate/common/create_release.sh +30 -0
- package/senior-ci/release-candidate/create_branch.sh +64 -0
- package/senior-ci/release-candidate/frontend/get_version.sh +43 -0
- package/senior-ci/requirements-dev.txt +5 -0
- package/senior-ci/requirements.txt +5 -0
- package/senior-ci/scripts/apply_yamls.py +229 -0
- package/senior-ci/scripts/create_sre_issue/__main__.py +7 -0
- package/senior-ci/scripts/create_sre_issue/create_sre_issue.py +267 -0
- package/senior-ci/scripts/create_sre_issue/helpers.py +166 -0
- package/senior-ci/scripts/create_sre_issue/jira_manager.py +37 -0
- package/senior-ci/scripts/validate_changelog.sh +3 -0
- package/senior-ci/sonar-project.properties +1 -0
- package/server.js +5 -0
- package/sonar-project.properties +10 -0
- package/src/app/app.component.html +43 -0
- package/src/app/app.component.scss +36 -0
- package/src/app/app.component.ts +56 -0
- package/src/app/app.module.ts +64 -0
- package/src/app/shared/shared.module.ts +28 -0
- package/src/environments/environment.default.ts +3 -0
- package/src/environments/environment.prod.ts +6 -0
- package/src/environments/environment.ts +7 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +17 -0
- package/src/locale/en-US.json +3 -0
- package/src/locale/es-ES.json +3 -0
- package/src/locale/pt-BR.json +3 -0
- package/src/main.ts +13 -0
- package/src/polyfills.ts +58 -0
- package/src/styles.scss +11 -0
- package/src/tsconfig.app.json +21 -0
- package/src/typings.d.ts +15 -0
- package/tsconfig.json +39 -0
- package/tslint.json +80 -0
- package/bundles/seniorsistemas-exclusion-process-component.umd.js +0 -747
- package/bundles/seniorsistemas-exclusion-process-component.umd.js.map +0 -1
- package/bundles/seniorsistemas-exclusion-process-component.umd.min.js +0 -16
- package/bundles/seniorsistemas-exclusion-process-component.umd.min.js.map +0 -1
- package/esm2015/enums/enum-exclusion-process-status.js +0 -8
- package/esm2015/exclusion-details/exclusion-details.component.js +0 -216
- package/esm2015/exclusion-details/exclusion-details.module.js +0 -28
- package/esm2015/exclusion-details/index.js +0 -3
- package/esm2015/exclusion-details/protocols/exclusion-details.js +0 -1
- package/esm2015/exclusion-details/protocols/index.js +0 -2
- package/esm2015/exclusion-details/protocols/show-details-information.js +0 -3
- package/esm2015/logical-delete.module.js +0 -27
- package/esm2015/models/exclusion-process-step-group.js +0 -1
- package/esm2015/models/exclusion-process-step.js +0 -1
- package/esm2015/models/exclusion-process.js +0 -1
- package/esm2015/models/index.js +0 -1
- package/esm2015/models/list-params.js +0 -1
- package/esm2015/models/list-result.js +0 -1
- package/esm2015/models/project-config.js +0 -3
- package/esm2015/public-api.js +0 -3
- package/esm2015/seniorsistemas-exclusion-process-component.js +0 -9
- package/esm2015/services/filter.service.js +0 -104
- package/esm2015/services/logical-delete-config.service.js +0 -29
- package/esm2015/services/logical-delete.service.js +0 -109
- package/esm5/enums/enum-exclusion-process-status.js +0 -8
- package/esm5/exclusion-details/exclusion-details.component.js +0 -235
- package/esm5/exclusion-details/exclusion-details.module.js +0 -31
- package/esm5/exclusion-details/index.js +0 -3
- package/esm5/exclusion-details/protocols/exclusion-details.js +0 -1
- package/esm5/exclusion-details/protocols/index.js +0 -2
- package/esm5/exclusion-details/protocols/show-details-information.js +0 -7
- package/esm5/logical-delete.module.js +0 -31
- package/esm5/models/exclusion-process-step-group.js +0 -1
- package/esm5/models/exclusion-process-step.js +0 -1
- package/esm5/models/exclusion-process.js +0 -1
- package/esm5/models/index.js +0 -1
- package/esm5/models/list-params.js +0 -1
- package/esm5/models/list-result.js +0 -1
- package/esm5/models/project-config.js +0 -3
- package/esm5/public-api.js +0 -3
- package/esm5/seniorsistemas-exclusion-process-component.js +0 -9
- package/esm5/services/filter.service.js +0 -109
- package/esm5/services/logical-delete-config.service.js +0 -30
- package/esm5/services/logical-delete.service.js +0 -112
- package/exclusion-details/exclusion-details.component.d.ts +0 -49
- package/exclusion-details/exclusion-details.module.d.ts +0 -2
- package/fesm2015/seniorsistemas-exclusion-process-component.js +0 -495
- package/fesm2015/seniorsistemas-exclusion-process-component.js.map +0 -1
- package/fesm5/seniorsistemas-exclusion-process-component.js +0 -530
- package/fesm5/seniorsistemas-exclusion-process-component.js.map +0 -1
- package/logical-delete.module.d.ts +0 -5
- package/seniorsistemas-exclusion-process-component.d.ts +0 -8
- package/seniorsistemas-exclusion-process-component.metadata.json +0 -1
- package/services/filter.service.d.ts +0 -19
- package/services/logical-delete-config.service.d.ts +0 -8
- package/services/logical-delete.service.d.ts +0 -20
- /package/{exclusion-details/index.d.ts → lib/src/exclusion-details/index.ts} +0 -0
- /package/{exclusion-details/protocols/index.d.ts → lib/src/exclusion-details/protocols/index.ts} +0 -0
- /package/{models/index.d.ts → lib/src/models/index.ts} +0 -0
- /package/{models/list-result.d.ts → lib/src/models/list-result.ts} +0 -0
- /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()
|