@sudosf/npm-publish-sandbox 3.10.8 → 5.0.0
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/.gitlab-ci.yml +56 -37
- package/package.json +1 -1
package/.gitlab-ci.yml
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
include:
|
|
2
|
-
- template: Jobs/SAST.gitlab-ci.yml
|
|
3
|
-
- template: Jobs/Dependency-Scanning.v2.gitlab-ci.yml
|
|
4
|
-
- template: Jobs/Code-Quality.gitlab-ci.yml
|
|
5
|
-
- template: Jobs/Secret-Detection.gitlab-ci.yml
|
|
6
|
-
|
|
7
|
-
variables:
|
|
8
|
-
KIBANA_VERSION: 9.1.7
|
|
9
|
-
KIBANA_IMAGE_TAG: "9.1.9"
|
|
10
|
-
|
|
11
1
|
stages:
|
|
12
|
-
- test
|
|
13
|
-
- yarn_steps
|
|
14
2
|
- deploy
|
|
15
3
|
|
|
16
|
-
|
|
4
|
+
npm-publish:
|
|
17
5
|
stage: deploy
|
|
6
|
+
image: node:22.17.1
|
|
18
7
|
rules:
|
|
19
8
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
20
9
|
when: never
|
|
@@ -24,15 +13,17 @@ artifactory-push:
|
|
|
24
13
|
when: always
|
|
25
14
|
- when: never
|
|
26
15
|
script:
|
|
27
|
-
-
|
|
28
|
-
- npm config set //artifactory.orbit.prod.vodacom.co.za/artifactory/api/npm/vod-npm/:_auth $(echo -n $ARTIFACTORY_USERNAME:$ARTIFACTORY_PASSWORD | base64)
|
|
16
|
+
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
|
|
29
17
|
- |
|
|
30
18
|
BASE_NAME=$(node -p "require('./package.json').name")
|
|
31
19
|
VERSION=$(node -p "require('./package.json').version")
|
|
32
|
-
|
|
20
|
+
MAJOR_VERSION=$(echo "$VERSION" | grep -o '^[0-9]*')
|
|
33
21
|
|
|
34
|
-
echo "
|
|
35
|
-
echo "
|
|
22
|
+
echo "========================================"
|
|
23
|
+
echo "Package : $BASE_NAME"
|
|
24
|
+
echo "Version : $VERSION"
|
|
25
|
+
echo "Branch : $CI_COMMIT_BRANCH"
|
|
26
|
+
echo "========================================"
|
|
36
27
|
|
|
37
28
|
# Determine environment from branch
|
|
38
29
|
if [[ $CI_COMMIT_BRANCH == "stable" || $CI_COMMIT_BRANCH =~ ^hotfix/stable- ]]; then
|
|
@@ -45,35 +36,63 @@ artifactory-push:
|
|
|
45
36
|
ENV="staging"
|
|
46
37
|
fi
|
|
47
38
|
|
|
48
|
-
echo "
|
|
39
|
+
echo "Target environment: $ENV"
|
|
49
40
|
|
|
50
|
-
#
|
|
41
|
+
# ----------------------------------------
|
|
42
|
+
# Git tagging
|
|
43
|
+
# ----------------------------------------
|
|
44
|
+
echo "[git] Configuring remote..."
|
|
51
45
|
git config --global --add safe.directory $CI_PROJECT_DIR
|
|
52
46
|
git remote set-url origin "https://oauth2:${GITLAB_TOKEN}@${CI_SERVER_HOST}/${CI_PROJECT_PATH}.git"
|
|
53
47
|
|
|
54
|
-
#
|
|
48
|
+
# Only create a clean vX.Y.Z git tag on stable
|
|
55
49
|
if [[ "$ENV" == "stable" ]]; then
|
|
56
|
-
if ! git rev-parse "$
|
|
57
|
-
git tag
|
|
58
|
-
git
|
|
50
|
+
if ! git rev-parse "v$VERSION" >/dev/null 2>&1; then
|
|
51
|
+
echo "[git] Creating stable release tag: v$VERSION"
|
|
52
|
+
git tag "v$VERSION"
|
|
53
|
+
git push origin "v$VERSION"
|
|
54
|
+
else
|
|
55
|
+
echo "[git] Tag v$VERSION already exists, skipping"
|
|
59
56
|
fi
|
|
60
57
|
fi
|
|
61
58
|
|
|
62
|
-
# Create/update environment-
|
|
63
|
-
git tag
|
|
64
|
-
git
|
|
59
|
+
# Create/update environment-version git tag e.g. dev-3.10.8, qa-3.10.8
|
|
60
|
+
echo "[git] Creating/updating environment git tag: $ENV-$VERSION"
|
|
61
|
+
git tag -f "$ENV-$VERSION"
|
|
62
|
+
git push origin "$ENV-$VERSION" --force
|
|
65
63
|
|
|
66
|
-
#
|
|
67
|
-
npm publish
|
|
64
|
+
# ----------------------------------------
|
|
65
|
+
# npm publish (ONLY on master/dev — first publish)
|
|
66
|
+
# All other environments just add dist-tags
|
|
67
|
+
# ----------------------------------------
|
|
68
|
+
if [[ "$ENV" == "dev" ]]; then
|
|
69
|
+
echo "[npm] Publishing $BASE_NAME@$VERSION with tag: dev-$VERSION"
|
|
70
|
+
npm publish --tag "dev-$VERSION" --access public
|
|
71
|
+
echo "[npm] Publish complete"
|
|
72
|
+
else
|
|
73
|
+
echo "[npm] Skipping publish — version $VERSION already published from master"
|
|
74
|
+
echo "[npm] Adding dist-tag '$ENV-$VERSION' to $BASE_NAME@$VERSION"
|
|
75
|
+
npm dist-tag add "$BASE_NAME@$VERSION" "$ENV-$VERSION"
|
|
76
|
+
fi
|
|
68
77
|
|
|
69
|
-
#
|
|
70
|
-
|
|
78
|
+
# ----------------------------------------
|
|
79
|
+
# Additional dist-tags
|
|
80
|
+
# ----------------------------------------
|
|
71
81
|
|
|
72
|
-
#
|
|
73
|
-
npm dist-tag
|
|
82
|
+
# Mutable env tag e.g. dev, qa (always points to latest of that env)
|
|
83
|
+
echo "[npm] Adding mutable env dist-tag: $ENV"
|
|
84
|
+
npm dist-tag add "$BASE_NAME@$VERSION" "$ENV"
|
|
74
85
|
|
|
75
|
-
#
|
|
76
|
-
|
|
77
|
-
|
|
86
|
+
# On stable, also point 'latest' to this version
|
|
87
|
+
if [[ "$ENV" == "stable" ]]; then
|
|
88
|
+
echo "[npm] Stable release — updating 'latest' tag to $VERSION"
|
|
89
|
+
npm dist-tag add "$BASE_NAME@$VERSION" latest
|
|
90
|
+
fi
|
|
78
91
|
|
|
79
|
-
echo "
|
|
92
|
+
echo "========================================"
|
|
93
|
+
echo "Done! $BASE_NAME@$VERSION tagged as:"
|
|
94
|
+
echo " - $ENV-$VERSION (immutable, version-specific)"
|
|
95
|
+
echo " - $ENV (mutable, always latest of this env)"
|
|
96
|
+
echo " - $ENV-$MAJOR_VERSION (mutable, latest of this env in major v$MAJOR_VERSION)"
|
|
97
|
+
[[ "$ENV" == "stable" ]] && echo " - latest"
|
|
98
|
+
echo "========================================"
|