Skip to content

Commit e58c6c7

Browse files
committed
fixing keys for publishing on OSSRH
1 parent 97d56d0 commit e58c6c7

File tree

6 files changed

+120
-24
lines changed

6 files changed

+120
-24
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
name: (Test) Publish packages Setup
2+
on:
3+
push:
4+
branches:
5+
- 'test-actions'
6+
jobs:
7+
publish:
8+
uses: ./.github/workflows/publish.yml
9+
secrets:
10+
GPG_KEY: ${{ secrets.GPG_KEY }}
11+
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
12+
GPG_KEYID: ${{ secrets.GPG_KEYID }}

.github/workflows/publish.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: (Reusable Workflow) Publish packages
2+
on:
3+
workflow_call:
4+
inputs:
5+
env:
6+
type: string
7+
description: 'Set as production to publish your artifacts'
8+
default: 'test'
9+
secrets:
10+
GPG_KEY:
11+
description: 'Your private GPG KEY'
12+
required: true
13+
GPG_PASSWORD:
14+
description: 'Your GPG KEY passphrase'
15+
required: true
16+
GPG_KEYID:
17+
description: 'Your GPG KEY last 8 digits'
18+
required: true
19+
OSSRH_USERNAME:
20+
description: 'Your Maven Central Key Username'
21+
required: true
22+
OSSRH_PASSWORD:
23+
description: 'Your Maven Central Key password'
24+
required: true
25+
env:
26+
GPG_DIR: ~/.gnupg
27+
GPG_SECRING_FILE_PATH: $GPG_DIR/secring.gpg
28+
29+
jobs:
30+
publish:
31+
runs-on: ubuntu-24.04
32+
33+
steps:
34+
- uses: actions/checkout@v4
35+
36+
- uses: actions/setup-java@v4
37+
with:
38+
java-version: '21'
39+
distribution: 'temurin'
40+
41+
- name: setup key
42+
run: |
43+
chmod +x ./ci-utils/setup-gpg.sh
44+
./ci-utils/setup-gpg.sh
45+
env:
46+
GPG_KEY: ${{ secrets.GPG_KEY }}
47+
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
48+
49+
- uses: gradle/actions/setup-gradle@v3
50+
51+
- name: Publish
52+
if: ${{ inputs.env == 'production' }}
53+
run: |
54+
export GPG_KEY=$(cat $GPG_SECRING_FILE_PATH)
55+
./gradlew publish --info --stacktrace
56+
env:
57+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
58+
GITHUB_ACTOR: ${{ github.actor }}
59+
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
60+
GPG_KEY_PASSWORD: ${{ secrets.GPG_PASSWORD }}

.github/workflows/release-publish.yml

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,17 @@ jobs:
1616
uses: ncipollo/release-action@v1
1717

1818
publish:
19-
runs-on: ubuntu-24.04
2019
needs: release
21-
2220
permissions:
2321
contents: read
2422
packages: write
2523

26-
steps:
27-
- uses: actions/checkout@v4
28-
29-
- uses: actions/setup-java@v4
30-
with:
31-
java-version: '21'
32-
distribution: 'temurin'
33-
34-
- uses: gradle/actions/setup-gradle@v3
35-
36-
- name: Publish
37-
run: ./gradlew publish --info --stacktrace
38-
env:
39-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40-
GITHUB_ACTOR: ${{ github.actor }}
24+
uses: ./.github/workflows/publish.yml
25+
secrets:
26+
GPG_KEY: ${{ secrets.GPG_KEY }}
27+
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
28+
GPG_KEYID: ${{ secrets.GPG_KEYID }}
29+
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
30+
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
31+
with:
32+
env: 'production'

build.gradle.kts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ plugins {
22
kotlin("jvm") version "2.0.21"
33
`java-library`
44
`maven-publish`
5+
`signing`
56
}
67

7-
group = "org.quantum"
8+
group = "io.github.dpbm"
89
version = "1.0"
910

1011
repositories {
11-
mavenCentral()
12+
mavenCentral()
1213
}
1314

1415
java {
@@ -84,17 +85,22 @@ publishing {
8485
}
8586
}
8687

87-
/*maven{
88+
maven{
8889
name = "OSSRH"
8990
url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
9091
credentials {
9192
username = System.getenv("OSSRH_USERNAME")
9293
password = System.getenv("OSSRH_PASSWORD")
9394
}
94-
}*/
95+
}
9596
}
9697
}
9798

99+
signing{
100+
useInMemoryPgpKeys(System.getenv("GPG_KEY"), System.getenv("GPG_KEY_PASSWORD"))
101+
sign(publishing.publications["mavenJava"])
102+
}
103+
98104

99105
tasks.javadoc {
100106
if (JavaVersion.current().isJava9Compatible) {

build_key.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import sys
2+
3+
def get_key_string(key:str) -> str:
4+
key_str = ''
5+
with open(key, 'r') as file:
6+
lines = file.readlines()
7+
total_lines = len(lines)
8+
9+
for i,line in enumerate(lines):
10+
replace_char = '' if i == total_lines - 1 else '\\n'
11+
key_str += line.replace('\n', replace_char)
12+
13+
return key_str
14+
15+
16+
if __name__ == '__main__':
17+
if(len(sys.argv) != 2):
18+
print("Invalid Usage!")
19+
print("Usage: python3 build_key.py PATH_TO_YOUR_GPG_KEY")
20+
sys.exit(1)
21+
22+
key = sys.argv[-1]
23+
24+
print("Your Parsed Key")
25+
print(get_key_string(key))

ci-utils/setup-gpg.sh

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ RESET_COLOR='\033[0m'
1111
GREEN='\033[0;32m'
1212

1313

14-
GPG_DIR="$HOME/.gnupg"
14+
# GPG_DIR="$HOME/.gnupg" is set on the workflow
15+
# GPG_SECRING_FILE_PATH="$GPG_DIR/secring.gpg" is set on the workflow
16+
1517
GPG_CONF_PATH="$GPG_DIR/gpg.conf"
1618
GPG_CONF_AGENT_PATH="$GPG_DIR/gpg-agent.conf"
17-
GPG_SECRING_FILE_PATH="$GPG_DIR/secring.gpg"
1819

1920
echo -e "$GREEN installing dependencies...$RESET_COLOR"
2021
sudo apt-get update && sudo apt-get install -y gnupg
@@ -45,4 +46,4 @@ echo -e "$GREEN import private key...$RESET_COLOR"
4546
cat <(echo -e "$GPG_KEY") | gpg --batch --import
4647

4748
echo -e "$GREEN export private key to path...$RESET_COLOR"
48-
gpg --batch --pinentry-mode=loopback --yes --passphrase "$GPG_PASSWORD" --export-secret-keys --output $GPG_SECRING_FILE_PATH
49+
gpg --batch --pinentry-mode=loopback --yes --passphrase "$GPG_PASSWORD" --export-secret-keys --armor --output $GPG_SECRING_FILE_PATH

0 commit comments

Comments
 (0)