Skip to content

Commit 11ef37b

Browse files
authored
DAT-19398 DevOps :: Fix Liquibase Checks versioning in the tarball to match the Liquibase Checks repository (#6642)
* ✨ (build-extension-jars.yml): add job to get liquibase-checks version from pom.xml to ensure the correct version is used during the build process ♻️ (build-extension-jars.yml): refactor build-liquibase-checks job to depend on get-liquibase-checks-version for improved version management * 📝 (create-release.yml): update workflow to improve formatting and readability by fixing indentation and removing unnecessary blank lines. This enhances maintainability and clarity of the workflow configuration. * ♻️ (build-extension-jars.yml): refactor version extraction logic to simplify the command and ensure it captures the correct version from pom.xml * ♻️ (workflows): refactor build workflows to remove owasp-scanner job and simplify dependencies for build-azure-uber-jar and build-extension-jars jobs. This change is made to streamline the CI process and improve build efficiency. * ✨ (create-release.yml): enable OWASP scanner in the release workflow to enhance security checks before builds ♻️ (create-release.yml): update job dependencies to ensure OWASP scanner runs before building Azure uber and extension jars * ♻️ (create-release.yml): refactor workflow to remove owasp-scanner job and adjust dependencies for build jobs to streamline the release process ✨ (create-release.yml): add get-liquibase-checks-version job to extract version from liquibase-checks repository for better version management 🔧 (create-release.yml): update build-extension-jars job to use specific branch for consistency in builds * ✨ (build-extension-jars.yml): add delete-checks-packages job to remove old versions of liquibase-checks package before building to ensure a clean environment and avoid version conflicts. * ♻️ (build-extension-jars.yml): refactor delete-checks-packages job to remove unnecessary dependency on setup_matrix and simplify workflow * ♻️ (create-release.yml): refactor conditional logic to remove unnecessary line for better readability and maintainability * ♻️ (create-release.yml): refactor artifact copying logic to handle liquibase-checks version separately for improved accuracy in release process * 📝 (create-release.yml): add debug logs and cleanup step for liquibase extensions to improve troubleshooting and ensure no leftover artifacts remain * ♻️ (create-release.yml): refactor JSON generation for repositories and servers to improve readability and maintainability * ✨ (create-release.yml): add job to download extensions artifacts for Liquibase to ensure all necessary dependencies are available during the release process * ♻️ (create-release.yml): refactor artifact copying logic to handle liquibase-checks separately for correct versioning * ♻️ (create-release.yml): refactor workflow to include owasp-scanner job as a dependency for build jobs to ensure security scanning occurs before builds
1 parent 9ff9bef commit 11ef37b

File tree

2 files changed

+128
-48
lines changed

2 files changed

+128
-48
lines changed

.github/workflows/build-extension-jars.yml

+38-8
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,47 @@ jobs:
8787
token: ${{ secrets.BOT_TOKEN }}
8888
ignore-versions: "^((?!${{ inputs.liquibase-version }}$).)*$"
8989

90+
get-liquibase-checks-version:
91+
if: ${{ contains(inputs.extensions, 'liquibase-checks') }}
92+
runs-on: ubuntu-latest
93+
outputs:
94+
version: ${{ steps.extract-version.outputs.version }}
95+
steps:
96+
- uses: actions/checkout@v4
97+
with:
98+
repository: liquibase/liquibase-checks
99+
token: ${{ secrets.BOT_TOKEN }}
100+
101+
- id: extract-version
102+
name: Extract version from pom.xml
103+
shell: bash
104+
run: |
105+
VERSION=$(grep '<version>' pom.xml | head -n 1 | sed 's/.*<version>\(.*\)-SNAPSHOT<\/version>.*/\1/')
106+
echo "version=$VERSION" >> $GITHUB_OUTPUT
107+
108+
delete-checks-packages:
109+
needs: [ get-liquibase-checks-version ]
110+
runs-on: ubuntu-22.04
111+
continue-on-error: true
112+
steps:
113+
- uses: actions/delete-package-versions@v5
114+
with:
115+
package-name: org.liquibase.ext.liquibase-checks
116+
package-type: "maven"
117+
token: ${{ secrets.BOT_TOKEN }}
118+
ignore-versions: "^((?!${{ needs.get-liquibase-checks-version.outputs.version }}$).)*$"
119+
90120
build-liquibase-checks:
91-
if: ${{ contains(inputs.extensions, 'liquibase-checks') }}
92-
needs: [ delete-extension-packages ]
93-
uses: liquibase/build-logic/.github/workflows/publish-for-liquibase.yml@main
94-
with:
95-
repository: liquibase/liquibase-checks
96-
version: ${{ inputs.liquibase-version }}
97-
secrets: inherit
121+
if: ${{ contains(inputs.extensions, 'liquibase-checks') }}
122+
needs: [ delete-extension-packages, get-liquibase-checks-version, delete-checks-packages ]
123+
uses: liquibase/build-logic/.github/workflows/publish-for-liquibase.yml@main
124+
with:
125+
repository: liquibase/liquibase-checks
126+
version: ${{ needs.get-liquibase-checks-version.outputs.version }}
127+
secrets: inherit
98128

99129
build-and-deploy-extensions:
100-
needs: [delete-dependency-packages, delete-extension-packages]
130+
needs: [delete-dependency-packages, delete-extension-packages, delete-checks-packages]
101131
runs-on: ubuntu-22.04
102132
strategy:
103133
fail-fast: false

.github/workflows/create-release.yml

+90-40
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ on:
1717
required: false
1818
type: boolean
1919
default: false
20-
dry_run:
20+
dry_run:
2121
description: 'Flag to indicate if the workflow is triggered to create a dry-run release'
2222
required: false
2323
type: boolean
@@ -42,7 +42,7 @@ on:
4242
required: true
4343
type: boolean
4444
default: false
45-
dry_run:
45+
dry_run:
4646
description: 'Flag to indicate if the workflow is triggered to create a dry-run release'
4747
required: true
4848
type: boolean
@@ -73,7 +73,7 @@ jobs:
7373
steps:
7474
- run: |
7575
echo "Creating version ${{ inputs.version }} from ${{ inputs.branch }} with artifacts from build ${{ inputs.runId }} "
76-
76+
7777
owasp-scanner:
7878
needs: [ setup ]
7979
uses: liquibase/build-logic/.github/workflows/owasp-scanner.yml@main
@@ -88,7 +88,7 @@ jobs:
8888
branch: ${{ needs.setup.outputs.branch }}
8989
liquibase-version: ${{ needs.setup.outputs.version }}
9090
secrets: inherit
91-
91+
9292
build-extension-jars:
9393
needs: [ setup, owasp-scanner ]
9494
uses: liquibase/liquibase/.github/workflows/build-extension-jars.yml@master
@@ -99,8 +99,27 @@ jobs:
9999
branch: ${{ needs.setup.outputs.branch }}
100100
secrets: inherit
101101

102+
get-liquibase-checks-version:
103+
needs: [ setup ]
104+
if: ${{ contains(needs.setup.outputs.extensions, 'liquibase-checks') }}
105+
runs-on: ubuntu-latest
106+
outputs:
107+
version: ${{ steps.extract-version.outputs.version }}
108+
steps:
109+
- uses: actions/checkout@v4
110+
with:
111+
repository: liquibase/liquibase-checks
112+
token: ${{ secrets.BOT_TOKEN }}
113+
114+
- id: extract-version
115+
name: Extract version from pom.xml
116+
shell: bash
117+
run: |
118+
VERSION=$(grep '<version>' pom.xml | head -n 1 | sed 's/.*<version>\(.*\)-SNAPSHOT<\/version>.*/\1/')
119+
echo "version=$VERSION" >> $GITHUB_OUTPUT
120+
102121
reversion:
103-
needs: [ setup, build-azure-uber-jar, build-extension-jars ]
122+
needs: [ setup, build-azure-uber-jar, build-extension-jars, get-liquibase-checks-version ]
104123
name: Re-version artifacts ${{ needs.setup.outputs.version }}
105124
runs-on: ubuntu-22.04
106125
steps:
@@ -130,37 +149,61 @@ jobs:
130149
131150
- name: Download liquibase-pro-azure-artifacts
132151
uses: actions/download-artifact@v4
133-
with:
152+
with:
134153
name: liquibase-pro-azure-artifacts
135154
path: liquibase-pro/liquibase-azure-deps
136155

137-
- name: Generate repositories and servers JSON
138-
id: generate-json
139-
run: |
140-
IFS=',' read -ra EXT <<< "${{ needs.setup.outputs.extensions }}"
141-
repositories=""
142-
servers=""
143-
for i in "${EXT[@]}"; do
144-
repositories+="{\"id\": \"$i\",\"url\": \"https://maven.pkg.github.com/liquibase/$i\",\"releases\": {\"enabled\": \"true\"},\"snapshots\": {\"enabled\": \"true\",\"updatePolicy\": \"always\"}},"
145-
servers+="{\"id\": \"$i\",\"username\": \"liquibot\",\"password\": \"${{ secrets.LIQUIBOT_PAT_GPM_ACCESS }}\"},"
146-
done
147-
# Remove trailing comma and wrap with brackets
148-
repositories="["${repositories::-1}"]"
149-
servers="["${servers::-1}"]"
150-
echo "REPOSITORIES_JSON=$repositories" >> $GITHUB_ENV
151-
echo "SERVERS_JSON=$servers" >> $GITHUB_ENV
152-
153156
- name: maven-settings-xml-action
154157
uses: whelk-io/maven-settings-xml-action@v22
155158
with:
156-
repositories: ${{ env.REPOSITORIES_JSON }}
157-
servers: ${{ env.SERVERS_JSON }}
158-
159+
repositories: |
160+
[
161+
{
162+
"id": "liquibase",
163+
"url": "https://maven.pkg.github.com/liquibase/liquibase",
164+
"releases": {
165+
"enabled": "true"
166+
},
167+
"snapshots": {
168+
"enabled": "true",
169+
"updatePolicy": "always"
170+
}
171+
},
172+
{
173+
"id": "liquibase-pro",
174+
"url": "https://maven.pkg.github.com/liquibase/liquibase-pro",
175+
"releases": {
176+
"enabled": "true"
177+
},
178+
"snapshots": {
179+
"enabled": "true",
180+
"updatePolicy": "always"
181+
}
182+
}
183+
]
184+
servers: |
185+
[
186+
{
187+
"id": "liquibase",
188+
"username": "liquibot",
189+
"password": "${{ secrets.LIQUIBOT_PAT_GPM_ACCESS }}"
190+
},
191+
{
192+
"id": "liquibase-pro",
193+
"username": "liquibot",
194+
"password": "${{ secrets.LIQUIBOT_PAT_GPM_ACCESS }}"
195+
}
196+
]
197+
159198
- name: Get extensions artifacts
160199
run: |
161200
IFS=',' read -ra ADDR <<< "${{ needs.setup.outputs.extensions }}"
162201
for extension in "${ADDR[@]}"; do
163-
mvn dependency:get -DgroupId=org.liquibase.ext -DartifactId=$extension -Dversion=${{ needs.setup.outputs.version }} -Dtransitive=false || echo "Failed to download $extension artifact"
202+
if [ "$extension" != "liquibase-checks" ]; then
203+
mvn dependency:get -DgroupId=org.liquibase.ext -DartifactId=$extension -Dversion=${{ needs.setup.outputs.version }} -Dtransitive=false || echo "Failed to download $extension artifact"
204+
else
205+
mvn dependency:get -DgroupId=org.liquibase.ext -DartifactId=$extension -Dversion=${{ needs.get-liquibase-checks-version.outputs.version }} -Dtransitive=false || echo "Failed to download $extension artifact"
206+
fi
164207
done
165208
166209
- name: Set up JDK
@@ -181,7 +224,7 @@ jobs:
181224
mkdir -p $PWD/.github/util/
182225
# Download a script (re-version.sh) from a URL and save it to the specified directory
183226
curl -o $PWD/.github/util/re-version.sh https://raw.githubusercontent.com/liquibase/liquibase/$scripts_branch/.github/util/re-version.sh
184-
227+
185228
# Download another script (sign-artifacts.sh) from a URL and save it to the specified directory
186229
curl -o $PWD/.github/util/sign-artifacts.sh https://raw.githubusercontent.com/liquibase/liquibase/$scripts_branch/.github/util/sign-artifacts.sh
187230
curl -o $PWD/.github/util/ManifestReversion.java https://raw.githubusercontent.com/liquibase/liquibase/$scripts_branch/.github/util/ManifestReversion.java
@@ -192,33 +235,41 @@ jobs:
192235
193236
# Execute the sign-artifacts.sh script with specific arguments
194237
$PWD/.github/util/sign-artifacts.sh download/liquibase-artifacts "${{ needs.setup.outputs.version }}" "${{ needs.setup.outputs.branch }}"
195-
238+
196239
## Sign Files
197240
## liquibase-azure-deps and liquibase extensions are already on its correct version. Check reusable workflow: build-azure-uber-jar.yml and build-extension-jars.yml
198241
mv liquibase-pro/liquibase-azure-deps/* re-version/out
199-
242+
200243
# Modify the zip file
201244
unzip re-version/out/liquibase-${{ needs.setup.outputs.version }}.zip -d re-version/out/liquibase-${{ needs.setup.outputs.version }}
202245
mkdir -p re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions
203246
rm -rf re-version/out/liquibase-${{ needs.setup.outputs.version }}.zip
204247
IFS=',' read -ra EXT <<< "${{ needs.setup.outputs.extensions }}"
205248
for i in "${EXT[@]}"; do
206-
cp ~/.m2/repository/org/liquibase/ext/$i/${{ needs.setup.outputs.version }}/$i-${{ needs.setup.outputs.version }}.jar re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions/$i.jar || echo "Failed to move $i artifact"
249+
if [ "$i" != "liquibase-checks" ]; then
250+
cp ~/.m2/repository/org/liquibase/ext/$i/${{ needs.setup.outputs.version }}/$i-${{ needs.setup.outputs.version }}.jar re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions/$i.jar || echo "Failed to move $i artifact"
251+
else
252+
cp ~/.m2/repository/org/liquibase/ext/$i/${{ needs.get-liquibase-checks-version.outputs.version }}/$i-${{ needs.get-liquibase-checks-version.outputs.version }}.jar re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions/$i.jar || echo "Failed to move $i artifact"
253+
fi
207254
done
208255
(cd re-version/out/liquibase-${{ needs.setup.outputs.version }} && zip -r ../liquibase-${{ needs.setup.outputs.version }}.zip . && cd .. && rm -rf liquibase-${{ needs.setup.outputs.version }})
209-
256+
210257
# Modify the tar.gz file
211258
mkdir -p re-version/out/liquibase-${{ needs.setup.outputs.version }}
212259
tar -xzvf re-version/out/liquibase-${{ needs.setup.outputs.version }}.tar.gz -C re-version/out/liquibase-${{ needs.setup.outputs.version }}
213260
rm -rf re-version/out/liquibase-${{ needs.setup.outputs.version }}.tar.gz
214261
mkdir -p re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions
215262
for I in "${EXT[@]}"; do
216-
cp ~/.m2/repository/org/liquibase/ext/$I/${{ needs.setup.outputs.version }}/$I-${{ needs.setup.outputs.version }}.jar re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions/$I.jar || echo "Failed to move $I artifact"
263+
if [ "$I" != "liquibase-checks" ]; then
264+
cp ~/.m2/repository/org/liquibase/ext/$I/${{ needs.setup.outputs.version }}/$I-${{ needs.setup.outputs.version }}.jar re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions/$I.jar || echo "Failed to move $I artifact"
265+
else
266+
cp ~/.m2/repository/org/liquibase/ext/$I/${{ needs.get-liquibase-checks-version.outputs.version }}/$I-${{ needs.get-liquibase-checks-version.outputs.version }}.jar re-version/out/liquibase-${{ needs.setup.outputs.version }}/internal/extensions/$I.jar || echo "Failed to move $I artifact"
267+
fi
217268
done
218269
(cd re-version/out/liquibase-${{ needs.setup.outputs.version }} && tar -czvf ../liquibase-${{ needs.setup.outputs.version }}.tar.gz * && cd .. && rm -rf liquibase-${{ needs.setup.outputs.version }})
219270
220271
$PWD/.github/util/sign-artifacts.sh re-version/out
221-
272+
222273
# Move files to a specific directory
223274
mkdir re-version/final
224275
mv re-version/out/liquibase-core-${{ needs.setup.outputs.version }}.jar re-version/final
@@ -253,7 +304,7 @@ jobs:
253304
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
254305
outputs:
255306
dry_run_zip_url: ${{ steps.extract-dry-run-url.outputs.dry_run_zip_url }}
256-
dry_run_tar_gz_url: ${{ steps.extract-dry-run-url.outputs.dry_run_tar_gz_url }}
307+
dry_run_tar_gz_url: ${{ steps.extract-dry-run-url.outputs.dry_run_tar_gz_url }}
257308
steps:
258309
- uses: actions/checkout@v4
259310

@@ -291,19 +342,19 @@ jobs:
291342
echo "Saving windows key"
292343
echo "$INSTALL4J_WINDOWS_KEY" | base64 -d > liquibase-dist/target/keys/datical_windows.pfx
293344
version="${{ needs.setup.outputs.version }}"
294-
345+
295346
##### Rebuild installers
296347
tarFile=$(pwd)/re-version/final/liquibase-$version.tar.gz
297348
scriptDir=$(pwd)/.github/util/
298-
349+
299350
mkdir -p liquibase-dist/target/liquibase-$version
300351
(cd liquibase-dist/target/liquibase-$version && tar xfz $tarFile)
301352
(cd liquibase-dist && $scriptDir/package-install4j.sh $version)
302353
mv liquibase-dist/target/liquibase-*-installer-* re-version/final
303-
354+
304355
##Sign Files
305356
$PWD/.github/util/sign-artifacts.sh re-version/final
306-
357+
307358
(cd re-version/final && zip liquibase-additional-$version.zip *.asc *.md5 *.sha1)
308359
rm re-version/final/*.asc
309360
rm re-version/final/*.md5
@@ -348,11 +399,10 @@ jobs:
348399
echo $zip_url
349400
echo "dry_run_tar_gz_url=$tar_gz_url" >> $GITHUB_OUTPUT
350401
echo "dry_run_zip_url=$zip_url" >> $GITHUB_OUTPUT
351-
402+
352403
- name: Attach standalone zip to Build
353404
if: ${{ inputs.standalone_zip == true && inputs.dry_run == false }}
354405
uses: actions/upload-artifact@v4
355406
with:
356407
name: liquibase-installers-${{ needs.setup.outputs.version }}
357408
path: re-version/final/*
358-

0 commit comments

Comments
 (0)