Skip to content

Commit 71f4660

Browse files
feat(build): publish to OSSRH Snapshots and MavenCentral (eclipse-tractusx#319)
1 parent e38b8b6 commit 71f4660

File tree

2 files changed

+61
-54
lines changed

2 files changed

+61
-54
lines changed

.github/workflows/build.yaml

+37-36
Original file line numberDiff line numberDiff line change
@@ -52,33 +52,20 @@ jobs:
5252
secret-presence:
5353
runs-on: ubuntu-latest
5454
outputs:
55-
GPG_PRIVATE_KEY: ${{ steps.secret-presence.outputs.GPG_PRIVATE_KEY }}
56-
GPG_PASSPHRASE: ${{ steps.secret-presence.outputs.GPG_PASSPHRASE }}
5755
DOCKER_HUB_TOKEN: ${{ steps.secret-presence.outputs.DOCKER_HUB_TOKEN }}
56+
HAS_OSSRH: ${{ steps.secret-presence.outputs.HAS_OSSRH }}
5857
steps:
5958
- name: Check whether secrets exist
6059
id: secret-presence
6160
run: |
62-
[ ! -z "${{ secrets.GPG_PRIVATE_KEY }}" ] && echo "GPG_PRIVATE_KEY=true" >> $GITHUB_OUTPUT
63-
[ ! -z "${{ secrets.GPG_PASSPHRASE }}" ] && echo "GPG_PASSPHRASE=true" >> $GITHUB_OUTPUT
6461
[ ! -z "${{ secrets.DOCKER_HUB_TOKEN }}" ] && echo "DOCKER_HUB_TOKEN=true" >> $GITHUB_OUTPUT
62+
[ ! -z "${{ secrets.ORG_GPG_PASSPHRASE }}" ] &&
63+
[ ! -z "${{ secrets.ORG_GPG_PRIVATE_KEY }}" ] &&
64+
[ ! -z "${{ secrets.ORG_OSSRH_USERNAME }}" ] &&
65+
[ ! -z "${{ secrets.ORG_OSSRH_PASSWORD }}" ] &&
66+
echo "HAS_OSSRH=true" >> $GITHUB_OUTPUT
6567
exit 0
6668
67-
build-extensions:
68-
runs-on: ubuntu-latest
69-
needs: [ secret-presence ]
70-
steps:
71-
# Set-Up
72-
- uses: actions/checkout@v3.5.2
73-
- uses: ./.github/actions/setup-java
74-
# Build
75-
- name: Build Extensions
76-
run: |-
77-
./gradlew -p edc-extensions build
78-
env:
79-
GITHUB_PACKAGE_USERNAME: ${{ github.actor }}
80-
GITHUB_PACKAGE_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
81-
8269
build-docker-images:
8370
name: "Create Docker Images"
8471
runs-on: ubuntu-latest
@@ -107,33 +94,47 @@ jobs:
10794
docker_user: ${{ secrets.DOCKER_HUB_USER }}
10895
docker_token: ${{ secrets.DOCKER_HUB_TOKEN }}
10996

110-
publish-to-github-packages:
97+
publish-to-maven-central:
98+
name: "Publish artefacts to OSSRH Snapshots / MavenCentral"
11199
runs-on: ubuntu-latest
112100
permissions:
113101
contents: read
114102
packages: write
115-
needs: [ secret-presence, build-extensions ]
103+
needs: [ secret-presence ]
116104

117105
# do not run on PR branches, do not run on releases
118106
if: |
119-
needs.secret-presence.outputs.GPG_PASSPHRASE && needs.secret-presence.outputs.GPG_PRIVATE_KEY && github.event_name != 'pull_request' && github.ref != 'refs/heads/releases'
107+
needs.secret-presence.outputs.HAS_OSSRH && github.event_name != 'pull_request' && github.ref != 'refs/heads/releases'
120108
steps:
109+
- name: List Keys
110+
run: |
111+
gpg -K --keyid-format=long
112+
113+
- name: Import GPG Private Key
114+
run: |
115+
echo "use-agent" >> ~/.gnupg/gpg.conf
116+
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
117+
echo -e "${{ secrets.ORG_GPG_PRIVATE_KEY }}" | gpg --import --batch
118+
for fpr in $(gpg --list-keys --with-colons | awk -F: '/fpr:/ {print $10}' | sort -u);
119+
do
120+
echo -e "5\\ny\\n" | gpg --batch --command-fd 0 --expert --edit-key $fpr trust;
121+
done
122+
121123
# Set-Up
122124
- uses: actions/checkout@v3.5.2
123-
124125
- uses: ./.github/actions/setup-java
125-
- name: Import GPG Key
126-
uses: crazy-max/ghaction-import-gpg@v5
127-
with:
128-
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
129-
passphrase: ${{ secrets.GPG_PASSPHRASE }}
130126

131-
# publish snapshots
132-
- name: Publish snapshot versions
133-
run: |-
134-
echo "Publishing Version $(grep -e "version" gradle.properties | cut -f2 -d"=") to Github Packages"
135-
./gradlew publishAllPublicationsToGitHubPackagesRepository
127+
# publish snapshots or releases
128+
- name: Publish version
136129
env:
137-
REPO: ${{ github.repository }}
138-
GITHUB_PACKAGE_USERNAME: ${{ github.actor }}
139-
GITHUB_PACKAGE_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
130+
OSSRH_PASSWORD: ${{ secrets.ORG_OSSRH_PASSWORD }}
131+
OSSRH_USER: ${{ secrets.ORG_OSSRH_USERNAME }}
132+
run: |-
133+
VERSION=$(./gradlew properties -q | grep "version:" | awk '{print $2}')
134+
cmd=""
135+
if [[ $VERSION != *-SNAPSHOT ]]
136+
then
137+
cmd="closeAndReleaseSonatypeStagingRepository";
138+
fi
139+
echo "Publishing Version $VERSION to Sonatype"
140+
./gradlew publishToSonatype ${cmd} --no-parallel -Pversion=$VERSION -Psigning.gnupg.executable=gpg -Psigning.gnupg.passphrase="${{ secrets.ORG_GPG_PASSPHRASE }}"

.github/workflows/publish-new-release.yml

+24-18
Original file line numberDiff line numberDiff line change
@@ -49,29 +49,35 @@ jobs:
4949
packages: write
5050
if: github.event.pull_request.merged == true && needs.release-version.outputs.RELEASE_VERSION
5151
steps:
52-
-
53-
name: Export RELEASE_VERSION env
52+
- name: Export RELEASE_VERSION env
5453
run: |
5554
echo "RELEASE_VERSION=${{ needs.release-version.outputs.RELEASE_VERSION }}" >> $GITHUB_ENV
56-
-
57-
uses: actions/checkout@v3.5.2
58-
-
59-
uses: ./.github/actions/setup-java
60-
61-
- name: Import GPG Key
62-
uses: crazy-max/ghaction-import-gpg@v5
63-
with:
64-
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
65-
passphrase: ${{ secrets.GPG_PASSPHRASE }}
55+
- name: List Keys
56+
run: |
57+
gpg -K --keyid-format=long
6658
67-
- name: Publish release version
59+
- name: Import GPG Private Key
6860
run: |
69-
echo "Publishing Version $(grep -e "version" gradle.properties | cut -f2 -d"=") to Github Packages"
70-
./gradlew publishAllPublicationsToGithubPackagesRepository
61+
echo "use-agent" >> ~/.gnupg/gpg.conf
62+
echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
63+
echo -e "${{ secrets.ORG_GPG_PRIVATE_KEY }}" | gpg --import --batch
64+
for fpr in $(gpg --list-keys --with-colons | awk -F: '/fpr:/ {print $10}' | sort -u);
65+
do
66+
echo -e "5\\ny\\n" | gpg --batch --command-fd 0 --expert --edit-key $fpr trust;
67+
done
68+
69+
# Set-Up
70+
- uses: actions/checkout@v3.5.2
71+
- uses: ./.github/actions/setup-java
72+
73+
# publish releases
74+
- name: Publish version
7175
env:
72-
REPO: ${{ github.repository }}
73-
GITHUB_PACKAGE_USERNAME: ${{ github.actor }}
74-
GITHUB_PACKAGE_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
76+
OSSRH_PASSWORD: ${{ secrets.ORG_OSSRH_PASSWORD }}
77+
OSSRH_USER: ${{ secrets.ORG_OSSRH_USERNAME }}
78+
run: |-
79+
echo "Publishing Version $RELEASE_VERSION to Sonatype/MavenCentral"
80+
./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository --no-parallel -Pversion=$RELEASE_VERSION -Psigning.gnupg.executable=gpg -Psigning.gnupg.passphrase="${{ secrets.ORG_GPG_PASSPHRASE }}"
7581
7682
docker-release:
7783
name: Publish Docker images

0 commit comments

Comments
 (0)