-
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 63 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,178 @@ | ||
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: Replace placeholders and version in build.gradle for examples | ||
shell: bash | ||
working-directory: ./java/examples | ||
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: Ensure no skipped files by linter | ||
working-directory: java | ||
run: ./gradlew spotlessDiagnose | grep 'All formatters are well behaved for all files' | ||
affonsov marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- 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 test reports | ||
affonsov marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if: always() | ||
continue-on-error: true | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: test-reports-java-${{ matrix.java }}-redis-${{ matrix.redis }}-${{ matrix.host.TARGET }} | ||
path: | | ||
java/client/build/reports/** | ||
java/integTest/build/reports/** | ||
utils/clusters/** | ||
benchmarks/results/** | ||
|
||
- name: Upload artifacts to publish | ||
if: always() | ||
Yury-Fridlyand marked this conversation as resolved.
Show resolved
Hide resolved
|
||
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 { | ||
|
@@ -180,7 +181,7 @@ 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 = "255.255.255" | ||
Yury-Fridlyand marked this conversation as resolved.
Show resolved
Hide resolved
|
||
pom { | ||
name = 'glide-for-valkey' | ||
|
@@ -213,6 +214,10 @@ publishing { | |
} | ||
} | ||
|
||
signing { | ||
sign publishing.publications | ||
} | ||
|
||
tasks.withType(Test) { | ||
testLogging { | ||
exceptionFormat "full" | ||
|
@@ -222,5 +227,6 @@ tasks.withType(Test) { | |
} | ||
|
||
jar { | ||
archiveBaseName = "glide" | ||
archiveBaseName = "glide-for-redis" | ||
archiveClassifier = "placeholder" | ||
Yury-Fridlyand marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} |
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?