@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,88 @@
1
+ #!/bin/bash
2
+
3
+ set -e # Exit at first error
4
+
5
+ RELEASE_NOTIFICATION_SUMMARY=${RELEASE_NOTIFICATION_SUMMARY:-Atualização}
6
+ RELEASE_NOTIFICATION_CONTENT_TEXT=${RELEASE_NOTIFICATION_CONTENT_TEXT:-## Acaba de sair uma versão quentinha do [$CI_PROJECT_NAME]($CI_PROJECT_URL), se liga!}
7
+ RELEASE_NOTIFICATION_TEAM_HOOK=${RELEASE_NOTIFICATION_TEAM_HOOK:?Você precisa definir a variável para a notificação de release funcionar.}
8
+
9
+ VERSION=${1:?É preciso definir a versão que terá as alterações notificadas.}
10
+ DATE=`date +%d\/%m\/%Y`
11
+
12
+ PENULTIMATE_VERSION_RAW=`git describe --abbrev=0 --tags $(git rev-list --tags --skip=1 --max-count=1)`
13
+
14
+ PENULTIMATE_VERSION=`echo $PENULTIMATE_VERSION_RAW | cut -d ',' -f2 | sed "s/-\([[:digit:]]\)/\.\1/g" | sed "s/[^[:digit:].]//g"`
15
+
16
+ # Get lines of each version
17
+ LINE_VERSION=`awk '/'$VERSION'/{ print NR; exit }' CHANGELOG.md`
18
+ LINE_PENULTIMATE_VERSION=`awk '/'$PENULTIMATE_VERSION'/{ print NR; exit }' CHANGELOG.md`
19
+
20
+ # Get last block of changelog between lines
21
+ CHANGELOG_RAW=`sed -n ''$LINE_VERSION','$LINE_PENULTIMATE_VERSION''p CHANGELOG.md`
22
+
23
+ # Removing unecessary lines, such as the first 3 and the last 2
24
+ CHANGELOG=`echo "$CHANGELOG_RAW" | sed -e '1,3d' | head -n -2`
25
+
26
+ # Get the titles of changes
27
+ TITLES=`echo "$CHANGELOG" | grep "###" | awk '{print $0,";"}'`
28
+
29
+ IFS=';'
30
+ TITLES=(`echo "${TITLES//[#]/}"`)
31
+ OBJS=()
32
+
33
+ # Create sections objects for each title
34
+ for i in "${!TITLES[@]}"; do
35
+ INDEX="$i"
36
+ TITLE=`echo "${TITLES[$INDEX]}" | xargs`
37
+ NEXT_TITLE=`echo "${TITLES[$INDEX+1]}" | xargs`
38
+
39
+ if [ -z "$NEXT_TITLE" ]
40
+ then
41
+ NEXT_TITLE=$PENULTIMATE_VERSION
42
+ fi
43
+
44
+ # Get respective content of each title
45
+ CONTENTS_RAW=`echo "$CHANGELOG" | awk '/'$TITLE'/{f=1;next} /'$NEXT_TITLE'/{f=0} f' | sed '/^[[:space:]]*$/d'`
46
+
47
+ # Replace each line wrap (\n) to comma
48
+ CONTENTS_RAW=`echo "$CONTENTS_RAW" | awk -vORS=, '{ print $0 }' | sed 's/,$/\n/'`
49
+
50
+ # Replace each comma to \n (string, not line wrap)
51
+ CONTENTS=${CONTENTS_RAW//,/\\\n}
52
+
53
+ OBJ='
54
+ {
55
+ "startGroup": "true",
56
+ "title": "## '$TITLE'",
57
+ "text": "'$CONTENTS'"
58
+ }
59
+ '
60
+
61
+ OBJS+=($OBJ)
62
+ done
63
+
64
+ # array join function
65
+ join_by() { local IFS="$1"; shift; echo "$*"; }
66
+
67
+ OBJS_STR=`join_by , ${OBJS[*]}`
68
+
69
+ echo "[CI] Enviando notificação de atualização da versão $VERSION para o hook $RELEASE_NOTIFICATION_TEAM_HOOK"
70
+
71
+ curl -s \
72
+ -X POST $RELEASE_NOTIFICATION_TEAM_HOOK \
73
+ -H 'Content-Type: application/json' -d '
74
+ {
75
+ "@type": "MessageCard",
76
+ "@context": "https://schema.org/extensions",
77
+ "summary": "'$RELEASE_NOTIFICATION_SUMMARY'",
78
+ "themeColor": "307b9e",
79
+ "title": "Atualização '$VERSION'",
80
+ "sections": [
81
+ {
82
+ "activitySubtitle": "'$DATE'",
83
+ "text": "'$RELEASE_NOTIFICATION_CONTENT_TEXT'",
84
+ },
85
+ '$OBJS_STR'
86
+ ]
87
+ }
88
+ '
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ set -e # Exit at first error
4
+
5
+ NOTIFICATION_MESSAGE=${NOTIFICATION_MESSAGE:?Você precisa informar qual a mensagem que será enviado para o teams}
6
+ TEAMS_HOOK=${TEAMS_HOOK:?Você precisa definir a variável para a notificação de release funcionar.}
7
+
8
+ echo "[CI] Enviando notificação no Teams"
9
+
10
+ curl -s -X POST "$TEAMS_HOOK" -H 'Content-Type: application/json' -d '{ "text": " '"$NOTIFICATION_MESSAGE"' "}' > /dev/null
@@ -0,0 +1,215 @@
1
+ #!/bin/bash
2
+ set -e # Exit at first error
3
+
4
+
5
+ #Init Variables
6
+ HAS_CACHE="false"
7
+ CACHE_S3_ADDR="s3://senior-ci-cache-build-backend/ci-cache"
8
+ MAVEN_CLI_OPTS="--batch-mode --errors --update-snapshots --fail-at-end --no-transfer-progress"
9
+
10
+ if [ "$SCI_DEBUG" = "true" ]; then
11
+ MAVEN_CLI_OPTS="$MAVEN_CLI_OPTS --show-version -X"
12
+ fi
13
+
14
+ # Import release helpers
15
+ . senior-ci/common/release-helpers.sh
16
+
17
+ # Import notification helpers
18
+ . senior-ci/common/notification-helpers.sh
19
+
20
+ # Set $PARALLEL
21
+ . senior-ci/common/parallel-helper.sh
22
+
23
+ # Senior CI Extensions
24
+ . senior-ci/common/senior-ci-extensions-helpers.sh
25
+
26
+ # Import npm S3 helpers
27
+ . senior-ci/common/s3cache-helpers.sh
28
+
29
+ # Import docker helpers
30
+ . senior-ci/common/docker-helpers.sh
31
+
32
+ # Print de variáveis para diagnóstico
33
+ print_job_vars() {
34
+ echo ""
35
+ echo "----------------------------------------------------------------"
36
+ echo "[CI] Variáveis:"
37
+ echo "[CI] - SCI_VERSION_TAG_BACKEND=$SCI_VERSION_TAG_BACKEND"
38
+ echo "[CI] - NO_PARALLEL=$NO_PARALLEL"
39
+ echo "[CI] - VERSION=$VERSION"
40
+ echo "[CI] - TEAMS_HOOK=$TEAMS_HOOK"
41
+ echo "[CI] - CI_COMMIT_TAG=$CI_COMMIT_TAG"
42
+ echo "----------------------------------------------------------------"
43
+ echo ""
44
+ }
45
+
46
+ use_snapshot_timestamp_version() {
47
+ TS=$(date +"%s")
48
+ VERSION="$CI_COMMIT_REF_SLUG-$TS-SNAPSHOT"
49
+ }
50
+
51
+ use_snapshot_version() {
52
+ if grep --fixed-strings --quiet "<tycho-version>" pom.xml; then
53
+ VERSION="$(grep -m 1 "<version>" pom.xml | cut -d ">" -f 2 | awk -vRS='<|>' NR%2).${CI_COMMIT_REF_SLUG//./}-v$(date +%Y%m%d%H%M)"
54
+ else
55
+ VERSION="$CI_COMMIT_REF_SLUG-SNAPSHOT"
56
+ fi
57
+ }
58
+
59
+ set_version() {
60
+ if grep --fixed-strings --quiet "<tycho-version>" pom.xml; then
61
+ [[ $VERSION =~ ^v.* ]] && VERSION=$(echo $CI_COMMIT_REF_SLUG |awk '{gsub("v","");gsub(/\-/,".");}1')
62
+ echo "[CI] Alterando versão com tycho-version:1.7.0. Nova versão - $VERSION"
63
+ mvn org.eclipse.tycho:tycho-versions-plugin:1.7.0:set-version -DnewVersion=$VERSION
64
+ else
65
+ echo "[CI] Alterando versão com mvn versions:set. Nova versão - $VERSION"
66
+ mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION
67
+ fi
68
+ }
69
+
70
+ normalize_ci_commit_tag() {
71
+ CI_COMMIT_TAG="${CI_COMMIT_TAG//-/.}"
72
+ CI_COMMIT_TAG="${CI_COMMIT_TAG:1}"
73
+ }
74
+
75
+ publish() {
76
+ docker_login
77
+
78
+ if [[ "$VERSION" == *-SNAPSHOT ]] && [[ "$HAS_CACHE" == "true" ]] ; then
79
+ echo "[CI] Realizando o envio dos artefatos ao servidor usando cache de build"
80
+ #Parametro Dmaven.compiler.useIncrementalCompilation setado como false para que o mesmo use o cache copiado
81
+ # Feito isso em decorrencia de um bug do maven (https://issues.apache.org/jira/browse/MCOMPILER-209)
82
+ mvn $MAVEN_CLI_OPTS $PARALLEL deploy -DretryFailedDeploymentCount=5 -Dmaven.compiler.useIncrementalCompilation=false -DskipTests=true
83
+ else
84
+ echo "[CI] Realizando a compilação dos artefatos"
85
+ mvn $MAVEN_CLI_OPTS $PARALLEL clean package -DskipTests=true
86
+
87
+ echo "[CI] Realizando o envio dos artefatos ao servidor"
88
+ mvn $MAVEN_CLI_OPTS $PARALLEL deploy -DretryFailedDeploymentCount=5 -DskipTests=true
89
+ fi
90
+
91
+ }
92
+
93
+ publish_snapshot(){
94
+ getS3BuildCache
95
+ print_job_vars
96
+ set_version
97
+ create_dockerhub_repo
98
+ publish
99
+ }
100
+
101
+
102
+ # Execução dos jobs
103
+ getopts "bstrpx" job
104
+ case "$job" in
105
+ b) echo "[CI] Executando compilação do código"
106
+ python3 senior-ci/common/validations/validate_issues.py
107
+
108
+ call_extension "before_build"
109
+
110
+ use_snapshot_version
111
+ print_job_vars
112
+ set_version
113
+
114
+ mvn $MAVEN_CLI_OPTS $PARALLEL clean compile
115
+
116
+ if [ -n "$CACHE_FILE_PATTERN" ]; then
117
+ createS3BuildCache $CACHE_FILE_PATTERN
118
+ fi
119
+
120
+ call_extension "after_build"
121
+ ;;
122
+
123
+ s) echo "[CI] Realizando release: SNAPSHOT"
124
+ call_extension "before_release_snapshot"
125
+
126
+ use_snapshot_version
127
+ publish_snapshot
128
+
129
+ call_extension "after_release_snapshot"
130
+ ;;
131
+
132
+ t) echo "[CI] Realizando release: SNAPSHOT TIMESTAMP"
133
+ call_extension "before_release_snapshot"
134
+
135
+ use_snapshot_timestamp_version
136
+ publish_snapshot
137
+
138
+ call_extension "after_release_snapshot"
139
+ ;;
140
+
141
+ r) echo "[CI] Realizando release: $2"
142
+ python3 senior-ci/common/validations/validate_issues.py
143
+
144
+ unshallow_repo
145
+
146
+ get_next_version $2
147
+
148
+ create_release_branch
149
+
150
+ call_extension "before_release"
151
+
152
+ call_extension "before_change_changelog"
153
+
154
+ update_changelog
155
+
156
+ call_extension "after_change_changelog"
157
+
158
+ set_version
159
+
160
+ create_release_tag
161
+
162
+ call_extension "after_release"
163
+
164
+ echo "[CI] Criação da release versão $VERSION realizado com sucesso. O job 'package' será executado automaticamente para publicar esta versão no Maven."
165
+
166
+ notify_release_teams_channel
167
+ ;;
168
+ p) echo "[CI] Publicação da versão"
169
+ call_extension "before_packaging"
170
+
171
+ normalize_ci_commit_tag
172
+ print_job_vars
173
+ publish
174
+
175
+ USER_DEPLOY_MAIL="${GITLAB_USER_EMAIL%@senior.com.br}"
176
+ DEPLOY_TEAMS_MESSAGE="O usuário $USER_DEPLOY_MAIL liberou a versão <$CI_PROJECT_URL/blob/$CI_COMMIT_REF_NAME/CHANGELOG.md#anchor-$VERSION_WITHOUT_DOTS|$VERSION> do projeto $CI_PROJECT_NAME."
177
+
178
+ call_extension "after_packaging"
179
+
180
+ notify_text_teams_channel "$DEPLOY_TEAMS_MESSAGE"
181
+
182
+ echo "[CI] Versão $VERSION publicada no Maven com sucesso!"
183
+ ;;
184
+
185
+ x) echo "[CI] Realizando validação de testes e análise no SonarQube"
186
+ VERSION="$CI_COMMIT_REF_SLUG"
187
+
188
+ call_extension "before_build"
189
+
190
+ SKIP_BUILD=$(python3 $CI_PROJECT_DIR/senior-ci/common/validations/buildable_project.py)
191
+ echo $SKIP_BUILD | sed 's@False@@g'
192
+
193
+ if [ "$SKIP_BUILD" = "False" ]; then
194
+
195
+ if grep --fixed-strings --quiet "<tycho-version>" pom.xml; then
196
+ use_snapshot_version
197
+ fi
198
+
199
+ getS3BuildCache
200
+ print_job_vars
201
+ set_version
202
+
203
+ mvn $MAVEN_CLI_OPTS $PARALLEL clean test
204
+
205
+ if [ -n "$CACHE_FILE_PATTERN" ]; then
206
+ createS3BuildCache $CACHE_FILE_PATTERN
207
+ fi
208
+ fi
209
+
210
+ call_extension "after_build"
211
+
212
+ python3 senior-ci/ci/sonar_scanner.py -t MAVEN -s $SKIP_BUILD
213
+ ;;
214
+
215
+ esac
@@ -0,0 +1,372 @@
1
+ #!/bin/bash
2
+ set -e # Exit at first error
3
+
4
+ #Init Variables
5
+ HAS_CACHE="false"
6
+ CACHE_S3_ADDR="s3://senior-ci-cache-build-backend/ci-cache"
7
+ HELP_MESSAGE="Caso tenha qualquer dúvida sobre o processo, consulte nossa Wiki - https://git.senior.com.br/engenharia/senior-ci/wikis/home"
8
+ MAVEN_CLI_OPTS="--batch-mode --errors --update-snapshots --fail-at-end --no-transfer-progress"
9
+
10
+ if [ "$SCI_DEBUG" = "true" ]; then
11
+ MAVEN_CLI_OPTS="$MAVEN_CLI_OPTS --show-version -X"
12
+ fi
13
+
14
+ # Import release helpers
15
+ . senior-ci/common/release-helpers.sh
16
+
17
+ # Import notification helpers
18
+ . senior-ci/common/notification-helpers.sh
19
+
20
+ # Set $PARALLEL
21
+ . senior-ci/common/parallel-helper.sh
22
+
23
+ # Senior CI Extensions
24
+ . senior-ci/common/senior-ci-extensions-helpers.sh
25
+
26
+ # Import npm S3 helpers
27
+ . senior-ci/common/s3cache-helpers.sh
28
+
29
+ # Import docker helpers
30
+ . senior-ci/common/docker-helpers.sh
31
+
32
+ # Propriedades da SDL
33
+ determine_properties() {
34
+ OUTPUT=$(grep "^generator.java.output\+[[:space:]]*\+=" sdl.properties | cut -d "=" -f 2 | tr -d '[[:space:]]')
35
+ : ${OUTPUT:=java}
36
+ CIFRIENDLY=$(grep "^generator.java.ciFriendlyVersion\+[[:space:]]*\+=" sdl.properties | head -1 | cut -d "=" -f 2 | tr -d '[[:space:]]')
37
+ : ${CIFRIENDLY:=false}
38
+ }
39
+
40
+ # Versionamento
41
+ CHANGELIST=""
42
+
43
+ use_snapshot_version() {
44
+ VERSION="$CI_COMMIT_REF_SLUG-SNAPSHOT"
45
+ CHANGELIST="-SNAPSHOT"
46
+ }
47
+
48
+ use_snapshot_timestamp_version() {
49
+ TS=$(date +"%s")
50
+ VERSION="$CI_COMMIT_REF_SLUG-$TS-SNAPSHOT"
51
+ CHANGELIST="-SNAPSHOT"
52
+ }
53
+
54
+ set_version() {
55
+ # Quando migrar para python olhar o metodo publish_snapshot
56
+ if [ "$CIFRIENDLY" != "true" ]; then
57
+ sed -i "s/generator.app.version=.*/generator.app.version=${VERSION}/" sdl.properties
58
+ fi
59
+
60
+ mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION
61
+ mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION --file $OUTPUT
62
+ }
63
+
64
+ versioned_mvn() {
65
+ CMD="mvn"
66
+ if [ "$CIFRIENDLY" == "true" ]; then
67
+ if [ "$CHANGELIST" == "" ]; then
68
+ if [ "$VERSION" == "" ]; then
69
+ VERSION=$(git tag --sort=-v:refname | grep "^v[0-9]\{1,\}-[0-9]\{1,\}-[0-9]\{1,\}$" | head -1 | sed "s/-\([[:digit:]]\)/\.\1/g")
70
+ VERSION="${VERSION:1}"
71
+ echo "[CI] - VERSION=$VERSION"
72
+ fi
73
+ CMD="$CMD -Drevision=$VERSION -Dsha1= -Dchangelist="
74
+ else
75
+ CMD="$CMD -Drevision=$CI_COMMIT_REF_SLUG -Dsha1= -Dchangelist=$CHANGELIST"
76
+ fi
77
+ fi
78
+ CMD="$CMD $@"
79
+ echo "$CMD"
80
+ $CMD
81
+ }
82
+
83
+ MESSAGE_HELP="Caso tenha qualquer dúvida sobre o processo, consulte nossa Wiki - https://git.senior.com.br/engenharia/senior-ci/wikis/home"
84
+
85
+ # Print de variáveis para diagnóstico
86
+ print_job_vars() {
87
+ echo ""
88
+ echo "----------------------------------------------------------------"
89
+ echo "[CI] Variáveis:"
90
+ echo "[CI] - SCI_VERSION_TAG_BACKEND=$SCI_VERSION_TAG_BACKEND"
91
+ echo "[CI] - NO_PARALLEL=$NO_PARALLEL"
92
+ echo "[CI] - OUTPUT=$OUTPUT"
93
+ echo "[CI] - CIFRIENDLY=$CIFRIENDLY"
94
+ echo "[CI] - CHANGELIST=$CHANGELIST"
95
+ echo "[CI] - VERSION=$VERSION"
96
+ echo "[CI] - TEAMS_HOOK=$TEAMS_HOOK"
97
+ echo "----------------------------------------------------------------"
98
+ echo ""
99
+ }
100
+
101
+
102
+ # Chamadas mvn
103
+ generate_sources() {
104
+ echo "[CI] Executando generate-sources"
105
+ versioned_mvn $MAVEN_CLI_OPTS $PARALLEL generate-sources
106
+ }
107
+
108
+ publish() {
109
+ # Utilizado no package e no releaseSnapshot
110
+
111
+ getS3BuildCache
112
+
113
+ docker_login
114
+
115
+ echo "[CI] Realizando a compilação dos artefatos"
116
+
117
+ if [[ "$VERSION" == *-SNAPSHOT ]] && [[ "$HAS_CACHE" == "true" ]] ; then
118
+ echo "[CI] Usando cache existente."
119
+ versioned_mvn $PARALLEL dockerfile:build -Dmaven.compiler.useIncrementalCompilation=true --file $OUTPUT/impl
120
+ else
121
+ echo "[CI] Buildando o projeto novamente."
122
+ versioned_mvn $MAVEN_CLI_OPTS $PARALLEL install -DskipTests=true --file $OUTPUT
123
+ fi
124
+
125
+ if [ "$1" == "docker" ]; then
126
+ if [ -z "$SKIP_IMAGE_SCAN" ]; then
127
+ if [ -z "$SVC_IMAGE" ]; then
128
+ IMAGE_NAME=`cat sdl.properties | sed -n -e 's/generator.app.name=//p'`
129
+ IMAGE_NAME=`echo ${IMAGE_NAME%%[[:cntrl:]]} | xargs`
130
+ else
131
+ IMAGE_NAME=$SVC_IMAGE
132
+ fi
133
+
134
+ TAG="${CI_COMMIT_TAG:-$CI_COMMIT_REF_SLUG}"
135
+ VERSION_FORMATED=$(echo $TAG |awk '{gsub("v","");gsub(/\-/,".");}1')
136
+ IMAGEM=seniorsistemas/${IMAGE_NAME/$'\r'/}:${VERSION_FORMATED}
137
+ if [[ "$(docker images -q $IMAGEM 2> /dev/null)" == "" ]]; then
138
+ echo "[CI] Imagem $IMAGEM não encontrada, alterando para repositorio alternativo. "
139
+ IMAGEM=seniorsa/${IMAGE_NAME/$'\r'/}:${VERSION_FORMATED}
140
+ fi
141
+
142
+ echo "[CI] Realizando a analise de segurança da imagem: $IMAGEM"
143
+ trivy --severity HIGH,CRITICAL $IMAGEM
144
+ fi
145
+ fi
146
+
147
+ create_dockerhub_repo
148
+
149
+ echo "[CI] Realizando o envio dos artefatos ao servidor"
150
+ if [[ "$VERSION" == *-SNAPSHOT ]] && [[ "$HAS_CACHE" == "true" ]] ; then
151
+ # Parametro Dmaven.compiler.useIncrementalCompilation setado como false para que o mesmo use o cache copiado
152
+ # Feito isso em decorrencia de um bug do maven (https://issues.apache.org/jira/browse/MCOMPILER-209)
153
+ versioned_mvn $MAVEN_CLI_OPTS $PARALLEL deploy -DretryFailedDeploymentCount=5 -Dmaven.compiler.useIncrementalCompilation=false -DskipTests=true --file $OUTPUT
154
+ else
155
+ versioned_mvn $MAVEN_CLI_OPTS $PARALLEL deploy -DretryFailedDeploymentCount=5 -DskipTests=true --file $OUTPUT
156
+ fi
157
+ }
158
+
159
+ publish_snapshot(){
160
+ call_extension "before_release_snapshot"
161
+ determine_properties
162
+ print_job_vars
163
+
164
+ # A alteração no sdl.properties deve acontecer antes do generate_sources
165
+ if [ "$CIFRIENDLY" != "true" ]; then
166
+ sed -i "s/generator.app.version=.*/generator.app.version=${VERSION}/" sdl.properties
167
+ fi
168
+
169
+ generate_sources
170
+ # set_version # Comentado pois esse metodo deve ser separado em dois momentos, antes e depois do generate_sources
171
+
172
+ # O versions:set deve ser feito após o generate_sources
173
+ mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION
174
+ # É usado versions:update-child-modules para forçar a atualização dos modulos filhos
175
+ mvn $MAVEN_CLI_OPTS versions:set -DgenerateBackupPoms=false -DnewVersion=$VERSION -DprocessAllModules -N versions:update-child-modules --file $OUTPUT
176
+
177
+ publish
178
+ call_extension "after_release_snapshot"
179
+ }
180
+
181
+ generateS3BuildCache() {
182
+ CACHE_FILE_NAME="BUILD_CACHE_$CI_PIPELINE_ID.tar.gz"
183
+
184
+ echo "[CI] Gerando cache da build da pasta $OUTPUT/*/target/ (Compressing $OUTPUT/*/target/)"
185
+ tar -zcf $CACHE_FILE_NAME $OUTPUT/*/target/
186
+ createS3BuildCache
187
+ }
188
+
189
+ # Execução dos jobs
190
+ getopts "bstpxrkd" job;
191
+ case "$job" in
192
+
193
+ b) echo "[CI] Executando compilação do código"
194
+ python3 senior-ci/common/validations/validate_issues.py
195
+
196
+ use_snapshot_version
197
+
198
+ VERSION="$CI_COMMIT_REF_SLUG"
199
+ docker_login
200
+
201
+ call_extension "before_build"
202
+
203
+ generate_sources
204
+ determine_properties
205
+ print_job_vars
206
+ set_version
207
+
208
+ versioned_mvn $MAVEN_CLI_OPTS $PARALLEL install -DskipTests=true -Ddockerfile.skip=true --file $OUTPUT
209
+
210
+ generateS3BuildCache
211
+
212
+ call_extension "after_build"
213
+ ;;
214
+
215
+ s) echo "[CI] Realizando release: SNAPSHOT"
216
+ use_snapshot_version
217
+ publish_snapshot
218
+ ;;
219
+
220
+ t) echo "[CI] Realizando release: SNAPSHOT TIMESTAMP"
221
+ use_snapshot_timestamp_version
222
+ publish_snapshot
223
+ ;;
224
+
225
+ p) echo "[CI] Publicação da versão"
226
+ call_extension "before_packaging"
227
+ determine_properties
228
+ VERSION=$CI_COMMIT_TAG
229
+
230
+ print_job_vars
231
+ generate_sources
232
+ publish docker
233
+
234
+ USER_DEPLOY_MAIL="${GITLAB_USER_EMAIL%@senior.com.br}"
235
+ MESSAGE="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"
236
+
237
+ call_extension "after_packaging"
238
+
239
+ notify_text_teams_channel "$MESSAGE"
240
+
241
+ echo "[CI] Versão $VERSION publicada no Docker Hub com sucesso!"
242
+ ;;
243
+
244
+ x) echo "[CI] Realizando validação de testes e análise no SonarQube"
245
+
246
+ VERSION="$CI_COMMIT_REF_SLUG"
247
+
248
+ call_extension "before_build"
249
+
250
+ SKIP_BUILD=$(python3 $CI_PROJECT_DIR/senior-ci/common/validations/buildable_project.py)
251
+ echo $SKIP_BUILD | sed 's@False@@g'
252
+
253
+ if [ "$SKIP_BUILD" = "False" ]; then
254
+
255
+ determine_properties
256
+
257
+ getS3BuildCache
258
+ generate_sources
259
+ set_version
260
+
261
+ versioned_mvn $MAVEN_CLI_OPTS $PARALLEL install -Ddockerfile.skip=true --file $OUTPUT
262
+
263
+ generateS3BuildCache
264
+ fi
265
+
266
+ call_extension "after_build"
267
+
268
+ python3 senior-ci/ci/sonar_scanner.py -t SDL -s $SKIP_BUILD
269
+ ;;
270
+
271
+ r) echo "[CI] Realizando release: $2"
272
+ python3 senior-ci/common/validations/validate_issues.py
273
+
274
+ unshallow_repo
275
+
276
+ get_next_version $2
277
+
278
+ create_release_branch
279
+
280
+ call_extension "before_release"
281
+
282
+ call_extension "before_change_changelog"
283
+ update_changelog
284
+ call_extension "after_change_changelog"
285
+
286
+ determine_properties
287
+ mvn $MAVEN_CLI_OPTS $PARALLEL generate-sources
288
+ set_version
289
+
290
+ create_release_tag
291
+
292
+ call_extension "after_release"
293
+
294
+ echo "[CI] Criação da release versão $VERSION realizado com sucesso. O job 'package' será executado automaticamente para publicar esta versão no Docker Hub."
295
+
296
+ notify_release_teams_channel
297
+ ;;
298
+
299
+ k) echo "[CI] Iniciando deploy no ambiente de desenvolvimento"
300
+ NAMESPACE_ARG=""
301
+ if [[ ! -z "$SCI_NAMESPACE" ]]; then
302
+ echo "[CI] Namespace padrão alterado para: $SCI_NAMESPACE"
303
+ NAMESPACE_ARG="-n $SCI_NAMESPACE"
304
+ fi
305
+
306
+ DEPLOYMENT=${DEPLOYMENT:-$CI_PROJECT_NAME}
307
+ : "${DEPLOYMENT:?Configure a integração com o Kubernetes para utilizar a feature de Continuous Deployment. $HELP_MESSAGE}"
308
+
309
+ call_extension "before_deploy"
310
+ CI_COMMIT_TAG="${CI_COMMIT_TAG//-/.}"
311
+ CI_COMMIT_TAG="${CI_COMMIT_TAG:1}"
312
+ VERSION="${CI_COMMIT_TAG:-$CI_COMMIT_REF_SLUG-SNAPSHOT}"
313
+
314
+ DEPLOYMENT_DATA=$(kubectl --insecure-skip-tls-verify $NAMESPACE_ARG get deployments $DEPLOYMENT -o jsonpath="{range ..containers[*]}{@.name}{\"=\"}{@.image}{end}{\"\n\"}" | grep "=seniorsistemas/\|=seniorsa/" | head -1)
315
+ CONTAINER=$(echo "$DEPLOYMENT_DATA" | cut -d "=" -f 1)
316
+ IMAGE=$(echo "$DEPLOYMENT_DATA" | cut -d "=" -f 2 | cut -d ":" -f 1)
317
+
318
+ if [[ -z "$CONTAINER" || -z "$IMAGE" || -z "$DEPLOYMENT" ]]; then
319
+ echo "[CI] Falha na descoberta das informações de deploy"
320
+ echo " - Container.: $CONTAINER"
321
+ echo " - Image.....: $IMAGE"
322
+ echo " - Deployment: $DEPLOYMENT"
323
+ exit 2
324
+ fi
325
+
326
+ echo "[CI] Alterando a imagem do deployment $DEPLOYMENT para $IMAGE:$VERSION no ambiente "
327
+ kubectl --insecure-skip-tls-verify $NAMESPACE_ARG set image deployment/$DEPLOYMENT $CONTAINER="$IMAGE:$VERSION"
328
+
329
+ DEPLOY_USERNAME="${GITLAB_USER_EMAIL%@senior.com.br}"
330
+ MESSAGE="O usuário $DEPLOY_USERNAME alterou o deployment $DEPLOYMENT para a versão $VERSION."
331
+
332
+ call_extension "after_deploy"
333
+
334
+ notify_text_teams_channel "$MESSAGE"
335
+
336
+ echo "[CI] Deploy realizado com sucesso!"
337
+ ;;
338
+
339
+ d) echo "[CI] Iniciando deploy no ambiente externo"
340
+ : "${CI_ENVIRONMENT_NAME:?Configure as propriedades name do environment no .gitlab-ci.yml. $MESSAGE_HELP}"
341
+ : "${BASIC_TOKEN:?Configure a variável BASIC_TOKEN no projeto. $MESSAGE_HELP}"
342
+ : "${NAMESPACE:?Configure a variável NAMESPACE no projeto. $MESSAGE_HELP}"
343
+
344
+ SERVICE=`cat sdl.properties | sed -n -e 's/generator.app.name=//p'`
345
+ : "${SERVICE:?Adicione no sdl.properties a chave generator.app.name com o nome do serviço. $MESSAGE_HELP}"
346
+
347
+ SERVICE=`echo ${SERVICE%%[[:cntrl:]]} | xargs`
348
+
349
+ CI_COMMIT_TAG="${CI_COMMIT_TAG//-/.}"
350
+ CI_COMMIT_TAG="${CI_COMMIT_TAG:1}"
351
+ VERSION="${CI_COMMIT_TAG:-$CI_COMMIT_REF_SLUG-SNAPSHOT}"
352
+
353
+ call_extension "before_deploy_external"
354
+
355
+ echo "[CI] Inicializando deploy da versão $VERSION do serviço $SERVICE no ambiente $CI_ENVIRONMENT_NAME"
356
+
357
+ STATUS_CODE=`curl -w %{http_code} "https://$CI_ENVIRONMENT_NAME:30006/setImg?ns=$NAMESPACE&img=seniorsa/$SERVICE&ver=$VERSION" \
358
+ -H "authorization: Basic $BASIC_TOKEN" \
359
+ -o response.txt`
360
+
361
+ if [[ $STATUS_CODE -ne 200 ]]
362
+ then
363
+ echo "[CI] Status Code:" $STATUS_CODE
364
+ echo "[CI] Vish, algo deu errado, talvez o serviço esteja indisponivel no momento, tente novamente mais tarde por favor. $MESSAGE_HELP"
365
+ exit 1
366
+ fi
367
+
368
+ call_extension "after_deploy_external"
369
+
370
+ echo "[CI] Deploy realizado com sucesso!"
371
+ ;;
372
+ esac