parse_a_changelog 1.3.2 → 1.3.3
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +4 -0
- data/Dockerfile +4 -1
- data/Jenkinsfile +16 -1
- data/build.sh +19 -1
- data/build_utils.sh +59 -0
- data/publish.sh +117 -15
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 684eac9caf9ec74bb72c8dd649d71b47baf57c698d11f34ef9d30d49e4b7ebf2
|
4
|
+
data.tar.gz: f3c459ea80b75a2f25f62e9000d9e4863f8177e05db04e42ccda47641f37e313
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 873fe4fe84e8c8f8ca7822f243c582f072d787d80070954618d0b77078214e9de7ffb0cf5741f113ce9b85b12101d52c3af7dc10e59127a56a8c3fb2cf1a65c3
|
7
|
+
data.tar.gz: 22e35de5e29599402757262c5ef93863f246712bd57592841b699d7e8beb66c4590085a494fffc97ad2b6183ad496b08f7059194b1f8c9a27a36a0491b680c8b
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
+
## [1.3.3] - 2024-11-08
|
10
|
+
### Changed
|
11
|
+
- Decrease Docker image size by using ruby:3-alpine base image (CNJR-5578)
|
12
|
+
|
9
13
|
## [1.3.2] - 2024-11-05
|
10
14
|
### Changed
|
11
15
|
- Use internal auto release process (CNJR-5578)
|
data/Dockerfile
CHANGED
data/Jenkinsfile
CHANGED
@@ -17,7 +17,12 @@ if (params.MODE == "PROMOTE") {
|
|
17
17
|
// Any publishing of targetVersion artifacts occur here
|
18
18
|
// Anything added to assetDirectory will be attached to the Github Release
|
19
19
|
|
20
|
-
|
20
|
+
// Pull existing images from internal registry in order to promote
|
21
|
+
infrapool.agentSh """
|
22
|
+
docker pull registry.tld/parse-a-changelog:${sourceVersion}
|
23
|
+
# Promote source version to target version.
|
24
|
+
./publish.sh --promote --source ${sourceVersion} --target ${targetVersion}
|
25
|
+
"""
|
21
26
|
|
22
27
|
// Ensure the working directory is a safe git directory for the subsequent
|
23
28
|
// promotion operations after this block.
|
@@ -121,6 +126,15 @@ pipeline {
|
|
121
126
|
}
|
122
127
|
}
|
123
128
|
|
129
|
+
// Allows for the promotion of images.
|
130
|
+
stage('Push images to internal registry') {
|
131
|
+
steps {
|
132
|
+
script {
|
133
|
+
infrapool.agentSh './publish.sh --internal'
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
124
138
|
stage('Release') {
|
125
139
|
when {
|
126
140
|
expression {
|
@@ -144,6 +158,7 @@ pipeline {
|
|
144
158
|
If your assets are in target on the main Jenkins agent, use:
|
145
159
|
infrapool.agentPut(from: 'target/', to: assetDirectory)
|
146
160
|
*/
|
161
|
+
infrapool.agentSh './publish.sh --edge'
|
147
162
|
}
|
148
163
|
}
|
149
164
|
}
|
data/build.sh
CHANGED
@@ -2,4 +2,22 @@
|
|
2
2
|
|
3
3
|
set -eux
|
4
4
|
|
5
|
-
|
5
|
+
. build_utils.sh
|
6
|
+
|
7
|
+
VERSION=unreleased
|
8
|
+
# Version derived from CHANGELOG and automated release library
|
9
|
+
[ -f VERSION ] && VERSION=$(<VERSION)
|
10
|
+
FULL_VERSION_TAG="$VERSION-$(git_tag)"
|
11
|
+
|
12
|
+
function main() {
|
13
|
+
retrieve_cyberark_ca_cert
|
14
|
+
build_docker_image
|
15
|
+
}
|
16
|
+
|
17
|
+
function build_docker_image() {
|
18
|
+
docker build . \
|
19
|
+
--tag parse-a-changelog:latest \
|
20
|
+
--tag "parse-a-changelog:${FULL_VERSION_TAG}"
|
21
|
+
}
|
22
|
+
|
23
|
+
main
|
data/build_utils.sh
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -euo pipefail
|
4
|
+
|
5
|
+
####
|
6
|
+
# Functions to generate version numbers for this project
|
7
|
+
####
|
8
|
+
|
9
|
+
git_tag() {
|
10
|
+
git rev-parse --short HEAD
|
11
|
+
}
|
12
|
+
|
13
|
+
# generate less specific versions, eg. given 1.2.3 will print 1.2 and 1
|
14
|
+
# (note: the argument itself is not printed, append it explicitly if needed)
|
15
|
+
gen_versions() {
|
16
|
+
local version=$1
|
17
|
+
while [[ $version = *.* ]]; do
|
18
|
+
version=${version%.*}
|
19
|
+
echo $version
|
20
|
+
done
|
21
|
+
}
|
22
|
+
|
23
|
+
function tag_and_push() {
|
24
|
+
local source="$1"
|
25
|
+
shift
|
26
|
+
local target="$1"
|
27
|
+
shift
|
28
|
+
|
29
|
+
docker tag "${source}" "${target}"
|
30
|
+
docker push "${target}"
|
31
|
+
}
|
32
|
+
|
33
|
+
function retrieve_cyberark_ca_cert() {
|
34
|
+
# On CyberArk dev laptops, golang module dependencies are downloaded with a
|
35
|
+
# corporate proxy in the middle. For these connections to succeed we need to
|
36
|
+
# configure the proxy CA certificate in build containers.
|
37
|
+
#
|
38
|
+
# To allow this script to also work on non-CyberArk laptops where the CA
|
39
|
+
# certificate is not available, we update container certificates based on
|
40
|
+
# a (potentially empty) certificate directory, rather than relying on the
|
41
|
+
# CA file itself.
|
42
|
+
mkdir -p "$(repo_root)/build_ca_certificate"
|
43
|
+
|
44
|
+
# Only attempt to extract the certificate if the security
|
45
|
+
# command is available.
|
46
|
+
#
|
47
|
+
# The certificate file must have the .crt extension to be imported
|
48
|
+
# by `update-ca-certificates`.
|
49
|
+
if command -v security &> /dev/null
|
50
|
+
then
|
51
|
+
security find-certificate \
|
52
|
+
-a -c "CyberArk Root CA" \
|
53
|
+
-p > build_ca_certificate/cyberark_root.crt
|
54
|
+
fi
|
55
|
+
}
|
56
|
+
|
57
|
+
repo_root() {
|
58
|
+
git rev-parse --show-toplevel
|
59
|
+
}
|
data/publish.sh
CHANGED
@@ -2,24 +2,126 @@
|
|
2
2
|
|
3
3
|
set -e
|
4
4
|
|
5
|
-
#
|
5
|
+
# The following is used to:
|
6
|
+
# Publish images on pre-release and tag as edge
|
7
|
+
# Promote pre-releases to releases and tag as latest
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
. build_utils.sh
|
10
|
+
|
11
|
+
function print_help() {
|
12
|
+
echo "Build Usage: $0 --internal"
|
13
|
+
echo "Release Usage: $0 --edge"
|
14
|
+
echo "Promote Usage: $0 --promote --source <VERSION> --target <VERSION>"
|
15
|
+
echo " --internal: publish images to registry.tld"
|
16
|
+
echo " --edge: publish docker images to docker hub"
|
17
|
+
echo " --source <VERSION>: specify version number of local image"
|
18
|
+
echo " --target <VERSION>: specify version number of remote image"
|
19
|
+
}
|
20
|
+
|
21
|
+
# Fail if no arguments are given.
|
22
|
+
if [[ $# -lt 1 ]]; then
|
23
|
+
print_help
|
24
|
+
exit 1
|
10
25
|
fi
|
11
26
|
|
12
|
-
|
27
|
+
PUBLISH_INTERNAL=false
|
28
|
+
PUBLISH_EDGE=false
|
29
|
+
PROMOTE=false
|
13
30
|
|
14
|
-
|
15
|
-
|
16
|
-
|
31
|
+
while [[ $# -gt 0 ]]; do
|
32
|
+
case "$1" in
|
33
|
+
--internal)
|
34
|
+
PUBLISH_INTERNAL=true
|
35
|
+
;;
|
36
|
+
--edge)
|
37
|
+
PUBLISH_EDGE=true
|
38
|
+
;;
|
39
|
+
--promote)
|
40
|
+
PROMOTE=true
|
41
|
+
;;
|
42
|
+
--source)
|
43
|
+
SOURCE_ARG="$2"
|
44
|
+
shift
|
45
|
+
;;
|
46
|
+
--target)
|
47
|
+
TARGET_ARG="$2"
|
48
|
+
shift
|
49
|
+
;;
|
50
|
+
--help)
|
51
|
+
print_help
|
52
|
+
exit 1
|
53
|
+
;;
|
54
|
+
*)
|
55
|
+
echo "Unknown option: ${1}"
|
56
|
+
print_help
|
57
|
+
exit 1
|
58
|
+
;;
|
59
|
+
esac
|
60
|
+
shift
|
61
|
+
done
|
17
62
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
63
|
+
readonly IMAGE_NAME="parse-a-changelog"
|
64
|
+
readonly REGISTRY='cyberark'
|
65
|
+
readonly LOCAL_REGISTRY='registry.tld'
|
66
|
+
# Version derived from CHANGLEOG and automated release library
|
67
|
+
VERSION=$(<VERSION)
|
68
|
+
readonly VERSION
|
69
|
+
FULL_VERSION_TAG="$VERSION-$(git_tag)"
|
70
|
+
readonly FULL_VERSION_TAG
|
23
71
|
|
24
|
-
|
25
|
-
|
72
|
+
if [[ ${PUBLISH_INTERNAL} = true ]]; then
|
73
|
+
echo "Publishing built images internally to registry.tld."
|
74
|
+
SOURCE_TAG=$FULL_VERSION_TAG
|
75
|
+
REMOTE_TAG=$VERSION
|
76
|
+
|
77
|
+
tag_and_push "${IMAGE_NAME}:${SOURCE_TAG}" "${LOCAL_REGISTRY}/${IMAGE_NAME}:${REMOTE_TAG}"
|
78
|
+
fi
|
79
|
+
|
80
|
+
if [[ ${PUBLISH_EDGE} = true ]]; then
|
81
|
+
echo "Performing edge release."
|
82
|
+
SOURCE_TAG=$FULL_VERSION_TAG
|
83
|
+
REMOTE_TAG=edge
|
84
|
+
readonly TAGS=(
|
85
|
+
"$VERSION"
|
86
|
+
"$REMOTE_TAG"
|
87
|
+
)
|
88
|
+
|
89
|
+
for tag in "${TAGS[@]}"; do
|
90
|
+
tag_and_push "$IMAGE_NAME:$SOURCE_TAG" "$REGISTRY/$IMAGE_NAME:$tag"
|
91
|
+
done
|
92
|
+
fi
|
93
|
+
|
94
|
+
if [[ ${PROMOTE} = true ]]; then
|
95
|
+
if [[ -z ${SOURCE_ARG:-} || -z ${TARGET_ARG:-} ]]; then
|
96
|
+
echo "When promoting, --source and --target flags are required."
|
97
|
+
print_help
|
98
|
+
exit 1
|
99
|
+
fi
|
100
|
+
|
101
|
+
# First publish the RubyGem
|
102
|
+
echo "Publishing RubyGem"
|
103
|
+
# Clone the release-tools repository if it doesn't exist
|
104
|
+
if [ ! -d release-tools ]; then
|
105
|
+
git clone git@github.com:conjurinc/release-tools.git
|
106
|
+
fi
|
107
|
+
export PATH=$PWD/release-tools/bin/:$PATH
|
108
|
+
# Build and publish rubygem
|
109
|
+
summon --yaml "RUBYGEMS_API_KEY: !var rubygems/api-key" \
|
110
|
+
publish-rubygem parse_a_changelog
|
111
|
+
|
112
|
+
# Update vars to utilize build_utils
|
113
|
+
SOURCE_TAG=$SOURCE_ARG
|
114
|
+
REMOTE_TAG=$TARGET_ARG
|
115
|
+
|
116
|
+
echo "Promoting image to $REMOTE_TAG"
|
117
|
+
readonly TAGS=(
|
118
|
+
"$REMOTE_TAG"
|
119
|
+
"latest"
|
120
|
+
)
|
121
|
+
|
122
|
+
# Publish images to docker hub
|
123
|
+
for tag in "${TAGS[@]}" $(gen_versions "$REMOTE_TAG"); do
|
124
|
+
echo "Tagging and pushing $REGISTRY/$IMAGE_NAME:$tag"
|
125
|
+
tag_and_push "${LOCAL_REGISTRY}/$IMAGE_NAME:$SOURCE_TAG" "$REGISTRY/$IMAGE_NAME:$tag"
|
126
|
+
done
|
127
|
+
fi
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse_a_changelog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Tuttle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-11-
|
11
|
+
date: 2024-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- SECURITY.md
|
93
93
|
- bin/parse
|
94
94
|
- build.sh
|
95
|
+
- build_utils.sh
|
95
96
|
- lib/grammar.tt
|
96
97
|
- lib/parse_a_changelog.rb
|
97
98
|
- parse_a_changelog.gemspec
|