11name : publish-natives
22
33on :
4- push :
5- branches : [ "master" ]
6- paths :
7- - ' .github/workflows/publish.yml' # when new targets are added
8- - ' build.gradle.kts' # when the root build script changes
9- - ' api' # when api source is changed
10- - ' native' # when natives are changed
114 workflow_dispatch :
125
136concurrency :
@@ -29,22 +22,17 @@ jobs:
2922
3023 name : Publish ${{ matrix.target }}
3124 environment : MavenRelease
32- runs-on : ubuntu-20.04
25+ runs-on : ubuntu-latest
3326 container :
34- image : ubuntu:16 .04
27+ image : ubuntu:18 .04
3528 steps :
3629 - name : Checkout sources
3730 uses : taiki-e/checkout-action@v1
3831 - name : Install Essentials
3932 run : |
4033 apt-get update -y
4134 apt-get upgrade -y
42- apt-get install -y curl gcc openjdk-8-jdk-headless
43- - name : Setup rustup
44- run : |
45- curl --proto '=https' --tlsv1.2 --retry 10 --location --silent --show-error --fail "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y
46- echo "$HOME/.cargo/bin" >> $GITHUB_PATH
47- shell : bash
35+ apt-get install -y curl gcc openjdk-17-jdk-headless
4836 - name : Install Rust toolchain
4937 uses : dtolnay/rust-toolchain@stable
5038 with :
@@ -53,19 +41,15 @@ jobs:
5341 - name : Install linker dependencies
5442 run : ${{ matrix.deps }}
5543 if : ${{ matrix.deps != '' }}
56- - name : Compile natives
57- working-directory : native
58- run : cargo build -r --target=${{ matrix.target }}
59- - name : Publish
44+ - name : Build and Publish
6045 env :
61- ORG_GRADLE_PROJECT_ossrhUser : ${{ secrets.OSSRH_USER }}
62- ORG_GRADLE_PROJECT_ossrhPassword : ${{ secrets.OSSRH_PASSWORD }}
63- ORG_GRADLE_PROJECT_stagingProfile : ${{ secrets.STAGING_PROFILE_ID }}
64- ORG_GRADLE_PROJECT_signingKey : ${{ secrets.GPG_KEY }}
65- ORG_GRADLE_PROJECT_signingKeyId : ${{ secrets.GPG_KEYID }}
66- run : |
67- chmod u+x gradlew
68- ./gradlew --console plain --stacktrace -Ptarget="${{ matrix.target }}" native:publishToSonatype closeAndReleaseStagingRepository
46+ JRELEASER_MAVENCENTRAL_USERNAME : ${{ secrets.MAVENCENTRAL_USERNAME }}
47+ JRELEASER_MAVENCENTRAL_TOKEN : ${{ secrets.MAVENCENTRAL_TOKEN }}
48+ JRELEASER_GPG_PUBLIC_KEY : ${{ secrets.GPG_PUBLIC_KEY }}
49+ JRELEASER_GPG_SECRET_KEY : ${{ secrets.GPG_SECRET_KEY }}
50+ JRELEASER_GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
51+ run : ./gradlew native:publish native:jreleaserRelease -Ptarget=${{ matrix.target }}
52+
6953 windows :
7054 strategy :
7155 matrix :
@@ -75,27 +59,61 @@ jobs:
7559
7660 name : Publish ${{ matrix.target }}
7761 environment : MavenRelease
78- runs-on : windows-2019
62+ runs-on : windows-2022
7963 steps :
8064 - name : Checkout sources
81- uses : actions/checkout@v2
65+ uses : actions/checkout@v6
8266 - name : Install Rust toolchain
83- uses : actions-rs/ toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # @v1
67+ uses : dtolnay/rust- toolchain@stable
8468 with :
85- profile : minimal
8669 toolchain : stable
87- override : true
8870 target : ${{ matrix.target }}
71+ - name : Set up JDK
72+ uses : actions/setup-java@v5
73+ with :
74+ distribution : ' temurin'
75+ java-version : ' 17'
76+ cache : ' gradle'
77+ - name : Build and Publish
78+ env :
79+ JRELEASER_MAVENCENTRAL_USERNAME : ${{ secrets.MAVENCENTRAL_USERNAME }}
80+ JRELEASER_MAVENCENTRAL_TOKEN : ${{ secrets.MAVENCENTRAL_TOKEN }}
81+ JRELEASER_GPG_PUBLIC_KEY : ${{ secrets.GPG_PUBLIC_KEY }}
82+ JRELEASER_GPG_SECRET_KEY : ${{ secrets.GPG_SECRET_KEY }}
83+ JRELEASER_GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
84+ run : ./gradlew native:publish native:jreleaserRelease -Ptarget=${{ matrix.target }}
85+
86+ macos :
87+ name : Build macOS universal binary
88+ runs-on : macos-14
89+ steps :
90+ - name : Checkout sources
91+ uses : actions/checkout@v6
92+
93+ - name : Install Rust toolchain
94+ uses : dtolnay/rust-toolchain@stable
95+ with :
96+ toolchain : stable
97+
8998 - name : Compile natives
9099 working-directory : native
91- run : cargo build -r --target=${{ matrix.target }}
92- - name : Publish
93- env :
94- ORG_GRADLE_PROJECT_ossrhUser : ${{ secrets.OSSRH_USER }}
95- ORG_GRADLE_PROJECT_ossrhPassword : ${{ secrets.OSSRH_PASSWORD }}
96- ORG_GRADLE_PROJECT_stagingProfile : ${{ secrets.STAGING_PROFILE_ID }}
97- ORG_GRADLE_PROJECT_signingKey : ${{ secrets.GPG_KEY }}
98- ORG_GRADLE_PROJECT_signingKeyId : ${{ secrets.GPG_KEYID }}
99100 run : |
100- chmod u+x gradlew
101- ./gradlew --console plain --stacktrace -Ptarget="${{ matrix.target }}" native:publishToSonatype closeAndReleaseStagingRepository
101+ rustup target add x86_64-apple-darwin
102+ cargo build -r --target=x86_64-apple-darwin
103+ rustup target add aarch64-apple-darwin
104+ cargo build -r --target=aarch64-apple-darwin
105+
106+ - name : Create target directory for darwin
107+ run : mkdir -p native/target/darwin/release
108+
109+ - name : Combine to universal dylib
110+ run : lipo -create -output native/target/darwin/release/libudpqueue.dylib native/target/**/release/*.dylib
111+
112+ - name : Build and Publish
113+ env :
114+ JRELEASER_MAVENCENTRAL_USERNAME : ${{ secrets.MAVENCENTRAL_USERNAME }}
115+ JRELEASER_MAVENCENTRAL_TOKEN : ${{ secrets.MAVENCENTRAL_TOKEN }}
116+ JRELEASER_GPG_PUBLIC_KEY : ${{ secrets.GPG_PUBLIC_KEY }}
117+ JRELEASER_GPG_SECRET_KEY : ${{ secrets.GPG_SECRET_KEY }}
118+ JRELEASER_GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
119+ run : ./gradlew native:publish native:jreleaserRelease -Ptarget=${{ matrix.target }} -x cargoBuild
0 commit comments