@kaikybrofc/omnizap-system 2.2.0 → 2.2.1
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/.env.example +8 -0
- package/README.md +5 -0
- package/package.json +1 -1
- package/scripts/github-release-notify.mjs +13 -1
- package/scripts/release.sh +191 -15
package/.env.example
CHANGED
|
@@ -539,6 +539,10 @@ RELEASE_GIT_BRANCH=
|
|
|
539
539
|
RELEASE_GIT_PRE_COMMIT_MESSAGE=chore(release): auto-commit before release
|
|
540
540
|
RELEASE_GIT_COMMIT_VERSION=1
|
|
541
541
|
RELEASE_GIT_VERSION_COMMIT_PREFIX=chore(release): v
|
|
542
|
+
# Geração automática de tag da versão no git
|
|
543
|
+
RELEASE_GIT_TAG_CREATE=1
|
|
544
|
+
RELEASE_GIT_TAG_PUSH=1
|
|
545
|
+
RELEASE_GIT_TAG_ANNOTATED=1
|
|
542
546
|
|
|
543
547
|
# Cria/atualiza GitHub Release (aba Releases) automaticamente no npm run release
|
|
544
548
|
RELEASE_GITHUB_RELEASE=1
|
|
@@ -549,6 +553,10 @@ RELEASE_GITHUB_TOKEN=
|
|
|
549
553
|
RELEASE_GITHUB_TAG_PREFIX=v
|
|
550
554
|
RELEASE_GITHUB_NAME_PREFIX=v
|
|
551
555
|
RELEASE_GITHUB_GENERATE_NOTES=1
|
|
556
|
+
# Inclui seção markdown com arquivos alterados no corpo da release
|
|
557
|
+
RELEASE_GITHUB_RELEASE_INCLUDE_CHANGED_FILES=1
|
|
558
|
+
# Limite de arquivos listados no markdown da release
|
|
559
|
+
RELEASE_GITHUB_RELEASE_MAX_FILES=300
|
|
552
560
|
# Opcional: 1 para prerelease, 0 para release normal, vazio = auto (detecta '-' na versao)
|
|
553
561
|
RELEASE_GITHUB_PRERELEASE=
|
|
554
562
|
RELEASE_GITHUB_DRAFT=0
|
package/README.md
CHANGED
|
@@ -239,6 +239,9 @@ Variáveis do fluxo de release (git):
|
|
|
239
239
|
- `RELEASE_GIT_PRE_COMMIT_MESSAGE` (default: `chore(release): auto-commit before release`)
|
|
240
240
|
- `RELEASE_GIT_COMMIT_VERSION` (default: `1`) - commita alteração da versão após sucesso
|
|
241
241
|
- `RELEASE_GIT_VERSION_COMMIT_PREFIX` (default: `chore(release): v`)
|
|
242
|
+
- `RELEASE_GIT_TAG_CREATE` (default: `1`) - cria tag `vX.Y.Z` no release
|
|
243
|
+
- `RELEASE_GIT_TAG_PUSH` (default: `1`) - envia a tag para o remoto
|
|
244
|
+
- `RELEASE_GIT_TAG_ANNOTATED` (default: `1`) - usa tag anotada (`git tag -a`)
|
|
242
245
|
- `RELEASE_GITHUB_RELEASE` (default: `1`) - cria/atualiza GitHub Release na aba Releases
|
|
243
246
|
- `RELEASE_REQUIRE_GITHUB_RELEASE` (default: `1`) - falha se GitHub Release estiver desativado
|
|
244
247
|
- `RELEASE_GITHUB_REPO` (opcional; ex.: `kaikybrofc/omnizap-system`)
|
|
@@ -246,6 +249,8 @@ Variáveis do fluxo de release (git):
|
|
|
246
249
|
- `RELEASE_GITHUB_TAG_PREFIX` (default: `v`) - prefixo da tag (`v2.1.9`)
|
|
247
250
|
- `RELEASE_GITHUB_NAME_PREFIX` (default: `v`) - prefixo do nome exibido na release
|
|
248
251
|
- `RELEASE_GITHUB_GENERATE_NOTES` (default: `1`) - usa notas automáticas do GitHub
|
|
252
|
+
- `RELEASE_GITHUB_RELEASE_INCLUDE_CHANGED_FILES` (default: `1`) - adiciona markdown com arquivos alterados no corpo da release
|
|
253
|
+
- `RELEASE_GITHUB_RELEASE_MAX_FILES` (default: `300`) - limite de arquivos listados no markdown
|
|
249
254
|
- `RELEASE_GITHUB_PRERELEASE` (default: auto) - vazio detecta `-` na versão como prerelease
|
|
250
255
|
- `RELEASE_GITHUB_DRAFT` (default: `0`)
|
|
251
256
|
- `RELEASE_GITHUB_TARGET` (opcional; vazio usa `HEAD`)
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { execSync } from 'node:child_process';
|
|
4
|
+
import fs from 'node:fs';
|
|
4
5
|
import path from 'node:path';
|
|
5
6
|
import process from 'node:process';
|
|
6
7
|
import { fileURLToPath } from 'node:url';
|
|
@@ -80,11 +81,22 @@ if (!repoOwner || !repoName) {
|
|
|
80
81
|
const tag = getArg('--tag');
|
|
81
82
|
const target = getArg('--target');
|
|
82
83
|
const name = getArg('--name', tag);
|
|
83
|
-
const
|
|
84
|
+
const bodyArg = getArg('--body', '');
|
|
85
|
+
const bodyFile = getArg('--body-file', '');
|
|
84
86
|
const generateNotes = toBool(getArg('--generate-notes', 'true'), true);
|
|
85
87
|
const prerelease = toBool(getArg('--prerelease', 'false'), false);
|
|
86
88
|
const draft = toBool(getArg('--draft', 'false'), false);
|
|
87
89
|
|
|
90
|
+
let body = bodyArg;
|
|
91
|
+
if (!body && bodyFile) {
|
|
92
|
+
try {
|
|
93
|
+
body = fs.readFileSync(bodyFile, 'utf8');
|
|
94
|
+
} catch (error) {
|
|
95
|
+
console.error(`Falha ao ler --body-file (${bodyFile}): ${error?.message || error}`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
88
100
|
if (!tag) {
|
|
89
101
|
console.error('Parâmetro obrigatório ausente: --tag');
|
|
90
102
|
process.exit(1);
|
package/scripts/release.sh
CHANGED
|
@@ -13,6 +13,9 @@ RELEASE_GIT_BRANCH="${RELEASE_GIT_BRANCH:-}"
|
|
|
13
13
|
RELEASE_GIT_PRE_COMMIT_MESSAGE="${RELEASE_GIT_PRE_COMMIT_MESSAGE:-chore(release): auto-commit before release}"
|
|
14
14
|
RELEASE_GIT_COMMIT_VERSION="${RELEASE_GIT_COMMIT_VERSION:-1}"
|
|
15
15
|
RELEASE_GIT_VERSION_COMMIT_PREFIX="${RELEASE_GIT_VERSION_COMMIT_PREFIX:-chore(release): v}"
|
|
16
|
+
RELEASE_GIT_TAG_CREATE="${RELEASE_GIT_TAG_CREATE:-1}"
|
|
17
|
+
RELEASE_GIT_TAG_PUSH="${RELEASE_GIT_TAG_PUSH:-1}"
|
|
18
|
+
RELEASE_GIT_TAG_ANNOTATED="${RELEASE_GIT_TAG_ANNOTATED:-1}"
|
|
16
19
|
RELEASE_GITHUB_RELEASE="${RELEASE_GITHUB_RELEASE:-1}"
|
|
17
20
|
RELEASE_REQUIRE_GITHUB_RELEASE="${RELEASE_REQUIRE_GITHUB_RELEASE:-1}"
|
|
18
21
|
RELEASE_GITHUB_TAG_PREFIX="${RELEASE_GITHUB_TAG_PREFIX:-v}"
|
|
@@ -21,6 +24,8 @@ RELEASE_GITHUB_GENERATE_NOTES="${RELEASE_GITHUB_GENERATE_NOTES:-1}"
|
|
|
21
24
|
RELEASE_GITHUB_PRERELEASE="${RELEASE_GITHUB_PRERELEASE:-}"
|
|
22
25
|
RELEASE_GITHUB_DRAFT="${RELEASE_GITHUB_DRAFT:-0}"
|
|
23
26
|
RELEASE_GITHUB_TARGET="${RELEASE_GITHUB_TARGET:-}"
|
|
27
|
+
RELEASE_GITHUB_RELEASE_INCLUDE_CHANGED_FILES="${RELEASE_GITHUB_RELEASE_INCLUDE_CHANGED_FILES:-1}"
|
|
28
|
+
RELEASE_GITHUB_RELEASE_MAX_FILES="${RELEASE_GITHUB_RELEASE_MAX_FILES:-300}"
|
|
24
29
|
RELEASE_REQUIRE_DUAL_PUBLISH="${RELEASE_REQUIRE_DUAL_PUBLISH:-1}"
|
|
25
30
|
RELEASE_VERIFY_UNIFIED_VERSION="${RELEASE_VERIFY_UNIFIED_VERSION:-1}"
|
|
26
31
|
RELEASE_VERIFY_PRIMARY_REGISTRY="${RELEASE_VERIFY_PRIMARY_REGISTRY:-${DEPLOY_PACKAGE_REGISTRY:-https://npm.pkg.github.com}}"
|
|
@@ -28,6 +33,7 @@ RELEASE_VERIFY_SECONDARY_REGISTRY="${RELEASE_VERIFY_SECONDARY_REGISTRY:-${DEPLOY
|
|
|
28
33
|
RELEASE_VERIFY_PRIMARY_TOKEN_KEYS="${RELEASE_VERIFY_PRIMARY_TOKEN_KEYS:-DEPLOY_PACKAGE_TOKEN,DEPLOY_GITHUB_TOKEN,GITHUB_TOKEN,GH_TOKEN,NPM_TOKEN,NODE_AUTH_TOKEN}"
|
|
29
34
|
RELEASE_VERIFY_SECONDARY_TOKEN_KEYS="${RELEASE_VERIFY_SECONDARY_TOKEN_KEYS:-DEPLOY_PACKAGE_SECONDARY_TOKEN,NPM_TOKEN,NODE_AUTH_TOKEN}"
|
|
30
35
|
TMP_NPMRC_FILES=()
|
|
36
|
+
TMP_MISC_FILES=()
|
|
31
37
|
|
|
32
38
|
case "$RELEASE_TYPE" in
|
|
33
39
|
patch|minor|major|prepatch|preminor|premajor|prerelease)
|
|
@@ -43,14 +49,19 @@ log() {
|
|
|
43
49
|
printf '[release] %s\n' "$*"
|
|
44
50
|
}
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
cleanup_tmp_files() {
|
|
47
53
|
for npmrc_tmp in "${TMP_NPMRC_FILES[@]:-}"; do
|
|
48
54
|
if [ -n "$npmrc_tmp" ] && [ -f "$npmrc_tmp" ]; then
|
|
49
55
|
rm -f "$npmrc_tmp"
|
|
50
56
|
fi
|
|
51
57
|
done
|
|
58
|
+
for tmp_file in "${TMP_MISC_FILES[@]:-}"; do
|
|
59
|
+
if [ -n "$tmp_file" ] && [ -f "$tmp_file" ]; then
|
|
60
|
+
rm -f "$tmp_file"
|
|
61
|
+
fi
|
|
62
|
+
done
|
|
52
63
|
}
|
|
53
|
-
trap
|
|
64
|
+
trap cleanup_tmp_files EXIT
|
|
54
65
|
|
|
55
66
|
require_cmd() {
|
|
56
67
|
if ! command -v "$1" >/dev/null 2>&1; then
|
|
@@ -217,6 +228,119 @@ compute_target_version() {
|
|
|
217
228
|
printf ''
|
|
218
229
|
}
|
|
219
230
|
|
|
231
|
+
resolve_previous_release_tag() {
|
|
232
|
+
local current_tag="$1"
|
|
233
|
+
(
|
|
234
|
+
cd "$PROJECT_ROOT" &&
|
|
235
|
+
git tag --list "${RELEASE_GITHUB_TAG_PREFIX}[0-9]*" --sort=-version:refname |
|
|
236
|
+
grep -Fvx "$current_tag" |
|
|
237
|
+
head -n 1
|
|
238
|
+
)
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
build_release_body_file() {
|
|
242
|
+
local current_tag="$1"
|
|
243
|
+
local target_ref="$2"
|
|
244
|
+
local body_file=""
|
|
245
|
+
body_file="$(mktemp /tmp/omnizap-release-body.XXXXXX.md)"
|
|
246
|
+
TMP_MISC_FILES+=("$body_file")
|
|
247
|
+
|
|
248
|
+
local previous_tag=""
|
|
249
|
+
previous_tag="$(resolve_previous_release_tag "$current_tag")"
|
|
250
|
+
|
|
251
|
+
local max_files=300
|
|
252
|
+
if [[ "$RELEASE_GITHUB_RELEASE_MAX_FILES" =~ ^[0-9]+$ ]] && [ "$RELEASE_GITHUB_RELEASE_MAX_FILES" -gt 0 ]; then
|
|
253
|
+
max_files="$RELEASE_GITHUB_RELEASE_MAX_FILES"
|
|
254
|
+
fi
|
|
255
|
+
|
|
256
|
+
local -a changed_files=()
|
|
257
|
+
if [ -n "$previous_tag" ]; then
|
|
258
|
+
mapfile -t changed_files < <(
|
|
259
|
+
cd "$PROJECT_ROOT" &&
|
|
260
|
+
git diff --name-only --diff-filter=ACMRTUXB "${previous_tag}..${target_ref}" |
|
|
261
|
+
sed '/^$/d'
|
|
262
|
+
)
|
|
263
|
+
fi
|
|
264
|
+
|
|
265
|
+
{
|
|
266
|
+
printf '## Arquivos alterados\n\n'
|
|
267
|
+
if [ -n "$previous_tag" ]; then
|
|
268
|
+
printf 'Comparação: `%s...%s`\n\n' "$previous_tag" "$current_tag"
|
|
269
|
+
else
|
|
270
|
+
printf 'Release inicial (sem tag anterior para comparação).\n\n'
|
|
271
|
+
fi
|
|
272
|
+
|
|
273
|
+
if [ "${#changed_files[@]}" -eq 0 ]; then
|
|
274
|
+
printf -- '- Nenhum arquivo alterado detectado.\n'
|
|
275
|
+
else
|
|
276
|
+
local total="${#changed_files[@]}"
|
|
277
|
+
local limit="$total"
|
|
278
|
+
if [ "$total" -gt "$max_files" ]; then
|
|
279
|
+
limit="$max_files"
|
|
280
|
+
fi
|
|
281
|
+
|
|
282
|
+
local i=0
|
|
283
|
+
while [ "$i" -lt "$limit" ]; do
|
|
284
|
+
printf -- '- `%s`\n' "${changed_files[$i]}"
|
|
285
|
+
i=$((i + 1))
|
|
286
|
+
done
|
|
287
|
+
|
|
288
|
+
if [ "$total" -gt "$max_files" ]; then
|
|
289
|
+
printf '\n_...e mais %s arquivo(s)._\n' "$((total - max_files))"
|
|
290
|
+
fi
|
|
291
|
+
fi
|
|
292
|
+
} > "$body_file"
|
|
293
|
+
|
|
294
|
+
printf '%s' "$body_file"
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
ensure_release_tag() {
|
|
298
|
+
local tag_name="$1"
|
|
299
|
+
local target_ref="$2"
|
|
300
|
+
|
|
301
|
+
local local_target_sha=""
|
|
302
|
+
local_target_sha="$(cd "$PROJECT_ROOT" && git rev-parse "${target_ref}^{}")"
|
|
303
|
+
|
|
304
|
+
if (cd "$PROJECT_ROOT" && git rev-parse --verify "refs/tags/${tag_name}" >/dev/null 2>&1); then
|
|
305
|
+
local local_tag_sha=""
|
|
306
|
+
local_tag_sha="$(cd "$PROJECT_ROOT" && git rev-parse "${tag_name}^{}")"
|
|
307
|
+
if [ "$local_tag_sha" != "$local_target_sha" ]; then
|
|
308
|
+
printf '[release] Tag %s já existe e aponta para outro commit (%s).\n' "$tag_name" "$local_tag_sha" >&2
|
|
309
|
+
exit 1
|
|
310
|
+
fi
|
|
311
|
+
log "Tag ${tag_name} já existe localmente."
|
|
312
|
+
else
|
|
313
|
+
if [ "$RELEASE_GIT_TAG_CREATE" != "1" ]; then
|
|
314
|
+
printf '[release] Tag %s não existe e RELEASE_GIT_TAG_CREATE=0.\n' "$tag_name" >&2
|
|
315
|
+
exit 1
|
|
316
|
+
fi
|
|
317
|
+
log "Criando tag ${tag_name}"
|
|
318
|
+
if [ "$RELEASE_GIT_TAG_ANNOTATED" = "1" ]; then
|
|
319
|
+
(cd "$PROJECT_ROOT" && git tag -a "$tag_name" -m "Release ${tag_name}" "$target_ref")
|
|
320
|
+
else
|
|
321
|
+
(cd "$PROJECT_ROOT" && git tag "$tag_name" "$target_ref")
|
|
322
|
+
fi
|
|
323
|
+
fi
|
|
324
|
+
|
|
325
|
+
if [ "$RELEASE_GIT_TAG_PUSH" = "1" ]; then
|
|
326
|
+
local remote_sha=""
|
|
327
|
+
remote_sha="$(cd "$PROJECT_ROOT" && git ls-remote --tags "$RELEASE_GIT_REMOTE" "refs/tags/${tag_name}^{}" | awk 'NR==1{print $1}')"
|
|
328
|
+
if [ -z "$remote_sha" ]; then
|
|
329
|
+
remote_sha="$(cd "$PROJECT_ROOT" && git ls-remote --tags "$RELEASE_GIT_REMOTE" "refs/tags/${tag_name}" | awk 'NR==1{print $1}')"
|
|
330
|
+
fi
|
|
331
|
+
|
|
332
|
+
if [ -z "$remote_sha" ]; then
|
|
333
|
+
log "Enviando tag ${tag_name} para ${RELEASE_GIT_REMOTE}"
|
|
334
|
+
(cd "$PROJECT_ROOT" && git push "$RELEASE_GIT_REMOTE" "refs/tags/${tag_name}")
|
|
335
|
+
elif [ "$remote_sha" != "$local_target_sha" ]; then
|
|
336
|
+
printf '[release] Tag remota %s já existe e aponta para outro commit (%s).\n' "$tag_name" "$remote_sha" >&2
|
|
337
|
+
exit 1
|
|
338
|
+
else
|
|
339
|
+
log "Tag ${tag_name} já existe no remoto ${RELEASE_GIT_REMOTE}."
|
|
340
|
+
fi
|
|
341
|
+
fi
|
|
342
|
+
}
|
|
343
|
+
|
|
220
344
|
commit_and_push_if_dirty() {
|
|
221
345
|
local commit_message="$1"
|
|
222
346
|
|
|
@@ -320,6 +444,14 @@ if [ "$RELEASE_GIT_COMMIT_VERSION" = "1" ]; then
|
|
|
320
444
|
fi
|
|
321
445
|
|
|
322
446
|
release_tag="${RELEASE_GITHUB_TAG_PREFIX}${new_version}"
|
|
447
|
+
release_target_ref="$(cd "$PROJECT_ROOT" && git rev-parse HEAD)"
|
|
448
|
+
|
|
449
|
+
if [ -n "$(cd "$PROJECT_ROOT" && git status --porcelain --untracked-files=no)" ]; then
|
|
450
|
+
printf '[release] Working tree com alterações rastreadas antes de criar tag/release. Ajuste RELEASE_GIT_COMMIT_VERSION ou commite manualmente.\n' >&2
|
|
451
|
+
exit 1
|
|
452
|
+
fi
|
|
453
|
+
|
|
454
|
+
ensure_release_tag "$release_tag" "$release_target_ref"
|
|
323
455
|
|
|
324
456
|
if [ "$RELEASE_GITHUB_RELEASE" = "1" ]; then
|
|
325
457
|
if [ "$RELEASE_GIT_AUTO_PUSH" != "1" ]; then
|
|
@@ -330,7 +462,7 @@ if [ "$RELEASE_GITHUB_RELEASE" = "1" ]; then
|
|
|
330
462
|
local_name="${RELEASE_GITHUB_NAME_PREFIX}${new_version}"
|
|
331
463
|
local_target="$RELEASE_GITHUB_TARGET"
|
|
332
464
|
if [ -z "$local_target" ]; then
|
|
333
|
-
local_target="$
|
|
465
|
+
local_target="$release_target_ref"
|
|
334
466
|
fi
|
|
335
467
|
|
|
336
468
|
local_prerelease="$RELEASE_GITHUB_PRERELEASE"
|
|
@@ -342,23 +474,40 @@ if [ "$RELEASE_GITHUB_RELEASE" = "1" ]; then
|
|
|
342
474
|
fi
|
|
343
475
|
fi
|
|
344
476
|
|
|
345
|
-
|
|
477
|
+
generate_notes_bool=""
|
|
346
478
|
generate_notes_bool="$(to_bool "$RELEASE_GITHUB_GENERATE_NOTES")"
|
|
347
|
-
|
|
479
|
+
prerelease_bool=""
|
|
348
480
|
prerelease_bool="$(to_bool "$local_prerelease")"
|
|
349
|
-
|
|
481
|
+
draft_bool=""
|
|
350
482
|
draft_bool="$(to_bool "$RELEASE_GITHUB_DRAFT")"
|
|
483
|
+
release_body_file=""
|
|
484
|
+
if [ "$RELEASE_GITHUB_RELEASE_INCLUDE_CHANGED_FILES" = "1" ]; then
|
|
485
|
+
release_body_file="$(build_release_body_file "$release_tag" "$release_target_ref")"
|
|
486
|
+
fi
|
|
351
487
|
|
|
352
488
|
log "Criando/atualizando GitHub Release ($release_tag)"
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
489
|
+
if [ -n "$release_body_file" ]; then
|
|
490
|
+
release_output="$(
|
|
491
|
+
cd "$PROJECT_ROOT" && node ./scripts/github-release-notify.mjs upsert \
|
|
492
|
+
--tag "$release_tag" \
|
|
493
|
+
--target "$local_target" \
|
|
494
|
+
--name "$local_name" \
|
|
495
|
+
--body-file "$release_body_file" \
|
|
496
|
+
--generate-notes "$generate_notes_bool" \
|
|
497
|
+
--prerelease "$prerelease_bool" \
|
|
498
|
+
--draft "$draft_bool"
|
|
499
|
+
)"
|
|
500
|
+
else
|
|
501
|
+
release_output="$(
|
|
502
|
+
cd "$PROJECT_ROOT" && node ./scripts/github-release-notify.mjs upsert \
|
|
503
|
+
--tag "$release_tag" \
|
|
504
|
+
--target "$local_target" \
|
|
505
|
+
--name "$local_name" \
|
|
506
|
+
--generate-notes "$generate_notes_bool" \
|
|
507
|
+
--prerelease "$prerelease_bool" \
|
|
508
|
+
--draft "$draft_bool"
|
|
509
|
+
)"
|
|
510
|
+
fi
|
|
362
511
|
log "GitHub Release atualizado: $release_output"
|
|
363
512
|
fi
|
|
364
513
|
|
|
@@ -376,6 +525,33 @@ if [ "$RELEASE_VERIFY_UNIFIED_VERSION" = "1" ]; then
|
|
|
376
525
|
fi
|
|
377
526
|
log "Verificado localmente: versão=$local_version_now"
|
|
378
527
|
|
|
528
|
+
tag_commit_now="$(cd "$PROJECT_ROOT" && git rev-parse "${release_tag}^{}" 2>/dev/null || true)"
|
|
529
|
+
if [ -z "$tag_commit_now" ]; then
|
|
530
|
+
printf '[release] Tag local ausente: %s\n' "$release_tag" >&2
|
|
531
|
+
exit 1
|
|
532
|
+
fi
|
|
533
|
+
if [ "$tag_commit_now" != "$release_target_ref" ]; then
|
|
534
|
+
printf '[release] Tag local %s aponta para commit divergente (%s).\n' "$release_tag" "$tag_commit_now" >&2
|
|
535
|
+
exit 1
|
|
536
|
+
fi
|
|
537
|
+
log "Verificada tag local: ${release_tag} -> ${tag_commit_now}"
|
|
538
|
+
|
|
539
|
+
if [ "$RELEASE_GIT_TAG_PUSH" = "1" ]; then
|
|
540
|
+
remote_tag_sha="$(cd "$PROJECT_ROOT" && git ls-remote --tags "$RELEASE_GIT_REMOTE" "refs/tags/${release_tag}^{}" | awk 'NR==1{print $1}')"
|
|
541
|
+
if [ -z "$remote_tag_sha" ]; then
|
|
542
|
+
remote_tag_sha="$(cd "$PROJECT_ROOT" && git ls-remote --tags "$RELEASE_GIT_REMOTE" "refs/tags/${release_tag}" | awk 'NR==1{print $1}')"
|
|
543
|
+
fi
|
|
544
|
+
if [ -z "$remote_tag_sha" ]; then
|
|
545
|
+
printf '[release] Tag remota ausente: %s em %s\n' "$release_tag" "$RELEASE_GIT_REMOTE" >&2
|
|
546
|
+
exit 1
|
|
547
|
+
fi
|
|
548
|
+
if [ "$remote_tag_sha" != "$release_target_ref" ]; then
|
|
549
|
+
printf '[release] Tag remota %s divergente (%s).\n' "$release_tag" "$remote_tag_sha" >&2
|
|
550
|
+
exit 1
|
|
551
|
+
fi
|
|
552
|
+
log "Verificada tag remota: ${release_tag} -> ${remote_tag_sha}"
|
|
553
|
+
fi
|
|
554
|
+
|
|
379
555
|
verify_registry_version "$pkg_name" "$new_version" "$RELEASE_VERIFY_PRIMARY_REGISTRY" "$RELEASE_VERIFY_PRIMARY_TOKEN_KEYS" "1"
|
|
380
556
|
verify_registry_version "$pkg_name" "$new_version" "$RELEASE_VERIFY_SECONDARY_REGISTRY" "$RELEASE_VERIFY_SECONDARY_TOKEN_KEYS" "0"
|
|
381
557
|
|