-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create initial workflow for publishing to Maven Central #1600
Changes from all commits
eaf4796
cde6106
94262f1
cccdd96
f8954bb
b452845
cc3b9db
443d7d8
5cf24ff
696668e
93bb466
003c819
d748048
f8be434
b79ae55
6f0a585
9dfaa46
30e3a75
83fcac2
8debc66
4ce2317
31a8c27
c981b67
469fe3a
b838801
5912796
1e04158
9e0b003
d46e768
35394f2
eeaf346
0696057
ddf4538
efda7c9
125e0b1
8d7377d
d31304b
faab1b3
727119d
d502a6d
d06ba10
e3e48a2
2d9084f
4b6dfe8
c9607dd
8b2616c
aeeccf1
faff846
143818a
8864434
d097a1f
1b5fce9
b3d247e
e4083f4
11f8470
c74ddbb
7bd96a5
1eab353
26dca80
b112082
379ef60
434b681
ea98c08
77cf7b7
644b0a9
e7394d7
d0e06b7
e448788
35f8c80
ae7b23f
3f02add
2742c38
3071d68
3970193
b0fb61f
8239e1c
71e5350
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
name: Java Prepare Deployment | ||
|
||
on: | ||
pull_request: | ||
paths: | ||
- .github/workflows/java-cd.yml | ||
- .github/workflows/install-shared-dependencies/action.yml | ||
- .github/workflows/start-self-hosted-runner/action.yml | ||
push: | ||
tags: | ||
- "v*.*" | ||
|
||
concurrency: | ||
group: java-cd-${{ github.head_ref || github.ref }} | ||
cancel-in-progress: true | ||
|
||
permissions: | ||
id-token: write | ||
|
||
jobs: | ||
start-self-hosted-runner: | ||
if: github.repository_owner == 'aws' | ||
runs-on: ubuntu-latest | ||
environment: AWS_ACTIONS | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Start self hosted EC2 runner | ||
uses: ./.github/workflows/start-self-hosted-runner | ||
with: | ||
role-to-assume: ${{ secrets.ROLE_TO_ASSUME }} | ||
aws-region: ${{ secrets.AWS_REGION }} | ||
ec2-instance-id: ${{ secrets.AWS_EC2_INSTANCE_ID }} | ||
|
||
create-binaries-to-publish: | ||
needs: start-self-hosted-runner | ||
if: github.repository_owner == 'aws' | ||
timeout-minutes: 35 | ||
strategy: | ||
# Run all jobs | ||
fail-fast: false | ||
matrix: | ||
java: | ||
- 11 | ||
- 17 | ||
redis: | ||
- 6.2.14 | ||
- 7.2.3 | ||
host: | ||
- { | ||
OS: ubuntu, | ||
RUNNER: ubuntu-latest, | ||
TARGET: x86_64-unknown-linux-gnu, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why unknown? |
||
CLASSIFIER: linux-x86_64 | ||
} | ||
- { | ||
OS: ubuntu, | ||
RUNNER: ["self-hosted", "Linux", "ARM64"], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it one runner or 3 different on the same OS/arch? |
||
TARGET: aarch64-unknown-linux-gnu, | ||
CLASSIFIER: linux-aarch_64, | ||
CONTAINER: "2_28" | ||
} | ||
- { | ||
OS: macos, | ||
RUNNER: macos-12, | ||
TARGET: x86_64-apple-darwin, | ||
CLASSIFIER: osx-x86_64 | ||
} | ||
- { | ||
OS: macos, | ||
RUNNER: macos-13-xlarge, | ||
TARGET: aarch64-apple-darwin, | ||
CLASSIFIER: osx-aarch_64 | ||
} | ||
|
||
runs-on: ${{ matrix.host.RUNNER }} | ||
|
||
steps: | ||
- name: Setup self-hosted runner access | ||
if: ${{ contains(matrix.build.RUNNER, 'self-hosted') && matrix.build.TARGET != 'aarch64-unknown-linux-musl' }} | ||
run: sudo chown -R $USER:$USER /home/ubuntu/actions-runner/_work/glide-for-redis | ||
|
||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Set the release version | ||
shell: bash | ||
run: | | ||
export version=`if ${{ github.event_name == 'pull_request' }}; then echo '255.255.255'; else echo ${GITHUB_REF:11}; fi` | ||
echo "RELEASE_VERSION=${version}" >> $GITHUB_ENV | ||
|
||
- name: Set up JDK ${{ matrix.java }} | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: "temurin" | ||
java-version: ${{ matrix.java }} | ||
|
||
- name: Install shared software dependencies | ||
uses: ./.github/workflows/install-shared-dependencies | ||
with: | ||
os: ${{ matrix.host.OS }} | ||
target: ${{ matrix.host.TARGET }} | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Install protoc (protobuf) | ||
uses: arduino/setup-protoc@v3 | ||
with: | ||
version: "26.1" | ||
repo-token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Create secret key ring file | ||
working-directory: java/client | ||
run: | | ||
echo "$SECRING_GPG" | base64 --decode > ./secring.gpg | ||
ls -ltr | ||
env: | ||
SECRING_GPG: ${{ secrets.SECRING_GPG }} | ||
|
||
- name: Replace placeholders and version in build.gradle | ||
shell: bash | ||
working-directory: ./java/client | ||
run: | | ||
SED_FOR_MACOS=`if [[ "${{ matrix.host.os }}" =~ .*"macos".* ]]; then echo "''"; fi` | ||
sed -i $SED_FOR_MACOS 's/placeholder/${{ matrix.host.CLASSIFIER }}/g' build.gradle | ||
sed -i $SED_FOR_MACOS "s/255.255.255/${{ env.RELEASE_VERSION }}/g" build.gradle | ||
|
||
- name: Build java client | ||
working-directory: java | ||
run: | | ||
./gradlew :client:publishToMavenLocal -Psigning.secretKeyRingFile=secring.gpg -Psigning.password="${{ secrets.GPG_PASSWORD }}" -Psigning.keyId=${{ secrets.GPG_KEY_ID }} | ||
|
||
- name: Bundle JAR | ||
working-directory: java | ||
run: | | ||
src_folder=~/.m2/repository/software/amazon/glide/glide-for-redis/${{ env.RELEASE_VERSION }} | ||
cd $src_folder | ||
jar -cvf bundle.jar * | ||
ls -ltr | ||
cd - | ||
cp $src_folder/bundle.jar . | ||
|
||
- name: Upload artifacts to publish | ||
continue-on-error: true | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: java-bundle-${{ matrix.java }}-redis-${{ matrix.redis }}-${{ matrix.host.TARGET }} | ||
path: | | ||
java/bundle.jar |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,6 +3,7 @@ import java.nio.file.Paths | |
plugins { | ||
id 'java-library' | ||
id 'maven-publish' | ||
id 'signing' | ||
} | ||
|
||
repositories { | ||
|
@@ -156,7 +157,7 @@ tasks.register('copyNativeLib', Copy) { | |
|
||
jar.dependsOn('copyNativeLib') | ||
copyNativeLib.dependsOn('buildRustRelease') | ||
compileTestJava.dependsOn('publishToMavenLocal') | ||
compileTestJava.dependsOn('copyNativeLib') | ||
test.dependsOn('buildRust') | ||
testFfi.dependsOn('buildRust') | ||
|
||
|
@@ -180,7 +181,8 @@ publishing { | |
mavenJava(MavenPublication) { | ||
from components.java | ||
groupId = 'software.amazon.glide' | ||
artifactId = 'glide' | ||
artifactId = 'glide-for-redis' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. glide-for-valkey? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This name was given by Andrew There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @acarbonetto - is this right or should it get rebranded now? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 0.4.3 - is branded as glide for redis (so suggesting to keep it for consistency), 1.0.0 - will be branded differently. |
||
// version is replaced during released workflow java-cd.yml | ||
version = "255.255.255" | ||
Yury-Fridlyand marked this conversation as resolved.
Show resolved
Hide resolved
|
||
pom { | ||
name = 'glide-for-valkey' | ||
|
@@ -213,6 +215,10 @@ publishing { | |
} | ||
} | ||
|
||
signing { | ||
sign publishing.publications | ||
} | ||
|
||
tasks.withType(Test) { | ||
testLogging { | ||
exceptionFormat "full" | ||
|
@@ -224,5 +230,7 @@ tasks.withType(Test) { | |
} | ||
|
||
jar { | ||
archiveBaseName = "glide" | ||
archiveBaseName = "glide-for-redis" | ||
// placeholder will be renamed by platform+arch on the release workflow java-cd.yml | ||
archiveClassifier = "placeholder" | ||
Yury-Fridlyand marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
plugins { | ||
// Apply the application plugin to add support for building a CLI application in Java. | ||
id 'application' | ||
id "com.google.osdetector" version "1.7.3" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why do we need this? If we don't - please delete There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. to make the example simpler for the end-user. The user don't have to think about the classifier will auto-resolve/detect on line 14 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also make life simpler for the developer, because if we have a placeholder on line 14, everyone will need to go there and change that to be able to build the project There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Oh I missed that it is in use there! |
||
} | ||
|
||
repositories { | ||
|
@@ -10,15 +11,13 @@ repositories { | |
} | ||
|
||
dependencies { | ||
implementation 'software.amazon.glide:glide:255.255.255' | ||
implementation group: 'software.amazon.glide', name: 'glide-for-redis', version: '0.4.3', classifier: osdetector.classifier | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why are we hard coding the version here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. TIL to make the example work and get the binaries from the maven repo. Long answer: |
||
|
||
implementation 'redis.clients:jedis:4.4.3' | ||
implementation 'io.lettuce:lettuce-core:6.2.6.RELEASE' | ||
implementation 'commons-cli:commons-cli:1.5.0' | ||
} | ||
|
||
run.dependsOn ':client:publishToMavenLocal' | ||
|
||
application { | ||
// Define the main class for the application. | ||
mainClass = 'glide.examples.ExamplesApp' | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we need to generate binaries for different versions of redis?