Skip to content

Commit 53775a1

Browse files
committed
Migrate release process to GitHub Actions
Complete migration to GitHub Actions. See gh-
1 parent 8495f29 commit 53775a1

File tree

6 files changed

+150
-3
lines changed

6 files changed

+150
-3
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: 'Publish Eclipse Update Site '
2+
inputs:
3+
version:
4+
required: true
5+
build-number:
6+
required: true
7+
runs:
8+
using: composite
9+
steps:
10+
- name: Stage
11+
id: stage
12+
shell: bash
13+
run: . ${{ github.action_path }}/publish-eclipse-update-site.sh;
14+
env:
15+
VERSION: "${{ inputs.version }}"
16+
BUILD_NUMBER: "${{ inputs.build-number }}"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
buildInfo=$( jfrog rt curl api/build/spring-javaformat-${VERSION}/${BUILD_NUMBER} )
2+
groupId=$( echo ${build_info} | jq -r '.buildInfo.modules[0].id' | sed 's/\(.*\):.*:.*/\1/' )
3+
version=$( echo ${build_info} | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
4+
5+
echo "Publishing Update Site ${groupId}:${version}"
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#!/bin/bash
2+
set -e
3+
4+
source $(dirname $0)/common.sh
5+
6+
buildName=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.name' )
7+
buildNumber=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.number' )
8+
groupId=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/\(.*\):.*:.*/\1/' )
9+
version=$( cat artifactory-repo/build-info.json | jq -r '.buildInfo.modules[0].id' | sed 's/.*:.*:\(.*\)/\1/' )
10+
11+
echo "Publishing ${buildName}/${buildNumber} to Eclipse Update Site"
12+
curl \
13+
-s \
14+
--connect-timeout 240 \
15+
--max-time 2700 \
16+
-u ${ARTIFACTORY_USERNAME}:${ARTIFACTORY_PASSWORD} \
17+
-f \
18+
-H "X-Explode-Archive: true" \
19+
-X PUT \
20+
-T "artifactory-repo/io/spring/javaformat/io.spring.javaformat.eclipse.site/${version}/io.spring.javaformat.eclipse.site-${version}.zip" \
21+
"https://repo.spring.io/javaformat-eclipse-update-site/${version}/" > /dev/null || { echo "Failed to publish" >&2; exit 1; }
22+
23+
releasedVersions=$( curl -s -f -X GET https://repo.spring.io/api/storage/javaformat-eclipse-update-site | jq -r '.children[] | .uri' | cut -c 2- | grep '[0-9].*' | sort -V )
24+
25+
repositories=""
26+
while read -r releasedVersion; do
27+
echo "Adding repository for ${releasedVersion}"
28+
repositories="${repositories}<repository><url>https://repo.spring.io/javaformat-eclipse-update-site/${releasedVersion}</url><layout>p2</layout></repository>"
29+
done <<< "${releasedVersions}"
30+
31+
pushd git-repo > /dev/null
32+
sed "s|##repositories##|${repositories}|" ci/scripts/publish-eclipse-update-site-pom-template.xml > publish-eclipse-update-site-pom.xml
33+
run_maven -f publish-eclipse-update-site-pom.xml clean package || { echo "Failed to publish" >&2; exit 1; }
34+
35+
curl \
36+
-s \
37+
--connect-timeout 240 \
38+
--max-time 2700 \
39+
-u ${ARTIFACTORY_USERNAME}:${ARTIFACTORY_PASSWORD} \
40+
-f \
41+
-X PUT \
42+
-T "target/repository/content.jar" \
43+
"https://repo.spring.io/javaformat-eclipse-update-site/" > /dev/null || { echo "Failed to publish" >&2; exit 1; }
44+
45+
curl \
46+
-s \
47+
--connect-timeout 240 \
48+
--max-time 2700 \
49+
-u ${ARTIFACTORY_USERNAME}:${ARTIFACTORY_PASSWORD} \
50+
-f \
51+
-X PUT \
52+
-T "target/repository/artifacts.jar" \
53+
"https://repo.spring.io/javaformat-eclipse-update-site/" > /dev/null || { echo "Failed to publish" >&2; exit 1; }
54+
55+
popd > /dev/null
56+
57+
echo "Publish complete"

.github/actions/stage-code/action.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
name: 'Stage '
2-
description: 'Stage Code'
32
inputs:
43
current-version:
54
required: true

.github/artifacts.spec

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"files": [
3+
{
4+
"aql": {
5+
"items.find": {
6+
"$and": [
7+
{
8+
"@build.name": "${buildName}",
9+
"@build.number": "${buildNumber}",
10+
"name": {
11+
"$nmatch": "*.zip"
12+
},
13+
"name": {
14+
"$nmatch": "*.zip.asc"
15+
}
16+
}
17+
]
18+
}
19+
},
20+
"target": "nexus/"
21+
}
22+
]
23+
}

.github/workflows/promote.yml

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,52 @@ jobs:
3333
name: Promote
3434
runs-on: ubuntu-latest
3535
steps:
36-
- name: Promote
37-
run: echo "Promote happens here"
36+
- name: Check Out
37+
uses: actions/checkout@v4
38+
- name: Set Up JFrog CLI
39+
uses: jfrog/setup-jfrog-cli@7c95feb32008765e1b4e626b078dfd897c4340ad # v4.1.2
40+
env:
41+
JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
42+
- name: Check Maven Central Sync Status
43+
id: check-sync-status
44+
run: |
45+
url=${{ format('https://repo.maven.apache.org/maven2/io/spring/javaformat/spring-javaformat/{0}/spring-javaformat-{0}.pom', inputs.version) }}
46+
status_code=$( curl --write-out '%{http_code}' --head --silent --output /dev/null ${url} )
47+
if [ "${status_code}" != 200 ] && [ "${status_code}" != 404 ]; then
48+
echo "Unexpected status code ${status_code}"
49+
exit 1
50+
fi
51+
echo "status-code=${status_code}" >> $GITHUB_OUTPUT
52+
- name: Download Release Artifacts
53+
if: ${{ steps.check-sync-status.outputs.status-code == '404' }}
54+
run: jf rt download --spec ./.github/artifacts.spec --spec-vars 'buildName=${{ format('spring-javaformat-{0}', inputs.version) }};buildNumber=${{ inputs.build-number }}'
55+
- name: Sync to Maven Central
56+
if: ${{ steps.check-sync-status.outputs.status-code == '404' }}
57+
uses: spring-io/[email protected]
58+
with:
59+
username: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
60+
password: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
61+
staging-profile-name: ${{ secrets.OSSRH_S01_STAGING_PROFILE }}
62+
create: true
63+
upload: true
64+
close: true
65+
release: true
66+
generate-checksums: true
67+
- name: Await Maven Central Sync
68+
if: ${{ steps.check-sync-status.outputs.status-code == '404' }}
69+
run: |
70+
url=${{ format('https://repo.maven.apache.org/maven2/io/spring/javaformat/spring-javaformat/{0}/spring-javaformat-{0}.pom', inputs.version) }}
71+
echo "Waiting for $url"
72+
until curl --fail --head --silent $url > /dev/null
73+
do
74+
echo "."
75+
sleep 60
76+
done
77+
echo "$url is available"
78+
- name: Publish Eclipse Update Site
79+
uses: ./.github/actions/publish-eclipse-update-site
80+
with:
81+
version: ${{ inputs.version }}
82+
build-number: ${{ inputs.build-number }}
83+
- name: Create GitHub Release
84+
run: echo "Create GitHub Release"

0 commit comments

Comments
 (0)