Split sonatype and solo studios publishing #4
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Artifacts for Publishing | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- master | |
tags: | |
- 'v*' | |
env: | |
# GPG signature credentials | |
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }} | |
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }} | |
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }} | |
# Solo Studios maven repo credentials | |
ORG_GRADLE_PROJECT_SoloStudiosUsername: ${{ secrets.SOLO_STUDIOS_USERNAME }} | |
ORG_GRADLE_PROJECT_SoloStudiosPassword: ${{ secrets.SOLO_STUDIOS_PASSWORD }} | |
# Sonatype maven repo credentials | |
ORG_GRADLE_PROJECT_SonatypeUsername: ${{ secrets.SONATYPE_USERNAME }} | |
ORG_GRADLE_PROJECT_SonatypePassword: ${{ secrets.SONATYPE_PASSWORD }} | |
JAVA_VERSION: 17 | |
JAVA_DISTRIBUTION: temurin | |
jobs: | |
create-staging-repo: | |
name: Create Sonatype Staging Repository | |
runs-on: ubuntu-latest | |
outputs: | |
repository-id: ${{ steps.create.outputs.repository_id }} | |
steps: | |
- name: Create Staging Repository | |
id: create | |
uses: nexus-actions/create-nexus-staging-repo@3e5e7209801629febdcf75541a4898710d28df9a | |
with: | |
base_url: https://s01.oss.sonatype.org/service/local/ | |
username: ${{ secrets.SONATYPE_USERNAME }} | |
password: ${{ secrets.SONATYPE_PASSWORD }} | |
staging_profile_id: ${{ secrets.SONATYPE_PROFILE_ID }} | |
description: ${{ github.repository }}/${{ github.workflow }}#${{ github.run_number }} | |
publish-windows: | |
name: Publish Windows Artifacts | |
runs-on: windows-latest | |
needs: [ create-staging-repo ] | |
env: | |
ORG_GRADLE_PROJECT_repositoryId: ${{ needs.create-staging-repo.outputs.repository-id }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: "${{ env.JAVA_VERSION }}" | |
distribution: "${{ env.JAVA_DISTRIBUTION }}" | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Publish MinGW artifacts to solo studios | |
run: | | |
./gradlew \ | |
publishMingwX64PublicationToSoloStudiosRepository | |
- name: Publish MinGW artifacts to Sonatype | |
# if: startsWith(github.ref, 'refs/tags') # Only publish to sonatype if tagged | |
run: | | |
./gradlew \ | |
publishMingwX64PublicationToSonatypeRepository | |
publish-mac: | |
name: Publish macOS artifacts | |
runs-on: macos-latest | |
needs: [ create-staging-repo ] | |
env: | |
ORG_GRADLE_PROJECT_repositoryId: ${{ needs.create-staging-repo.outputs.repository-id }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: "${{ env.JAVA_VERSION }}" | |
distribution: "${{ env.JAVA_DISTRIBUTION }}" | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Publish MacOS/iOS/TvOS/WatchOS artifacts to solo studios | |
run: | | |
./gradlew \ | |
publishMacosX64PublicationToSoloStudiosRepository \ | |
publishMacosArm64PublicationToSoloStudiosRepository \ | |
publishIosArm64PublicationToSoloStudiosRepository \ | |
publishIosX64PublicationToSoloStudiosRepository \ | |
publishIosSimulatorArm64PublicationToSoloStudiosRepository \ | |
publishTvosX64PublicationToSoloStudiosRepository \ | |
publishTvosArm64PublicationToSoloStudiosRepository \ | |
publishTvosSimulatorArm64PublicationToSoloStudiosRepository \ | |
publishWatchosX64PublicationToSoloStudiosRepository \ | |
publishWatchosArm64PublicationToSoloStudiosRepository \ | |
publishWatchosSimulatorArm64PublicationToSoloStudiosRepository | |
- name: Publish MacOS/iOS/TvOS/WatchOS artifacts to Sonatype | |
# if: startsWith(github.ref, 'refs/tags') # Only publish to sonatype if tagged | |
run: | | |
./gradlew \ | |
publishMacosX64PublicationToSonatypeRepository \ | |
publishMacosArm64PublicationToSonatypeRepository \ | |
publishIosArm64PublicationToSonatypeRepository \ | |
publishIosX64PublicationToSonatypeRepository \ | |
publishIosSimulatorArm64PublicationToSonatypeRepository \ | |
publishTvosX64PublicationToSonatypeRepository \ | |
publishTvosArm64PublicationToSonatypeRepository | |
publishTvosSimulatorArm64PublicationToSonatypeRepository \ | |
publishWatchosX64PublicationToSonatypeRepository \ | |
publishWatchosArm64PublicationToSonatypeRepository \ | |
publishWatchosSimulatorArm64PublicationToSonatypeRepository | |
publish-linux: | |
name: Publish Linux Artifacts | |
runs-on: ubuntu-latest | |
needs: [ create-staging-repo ] | |
env: | |
ORG_GRADLE_PROJECT_repositoryId: ${{ needs.create-staging-repo.outputs.repository-id }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-tags: true | |
- name: Setup Java | |
uses: actions/setup-java@v3 | |
with: | |
java-version: "${{ env.JAVA_VERSION }}" | |
distribution: "${{ env.JAVA_DISTRIBUTION }}" | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Publish Linux/Multiplatform/JVM/JS artifacts to solo studios | |
run: | | |
./gradlew \ | |
publishLinuxX64PublicationToSoloStudiosRepository \ | |
publishLinuxArm64PublicationToSoloStudiosRepository \ | |
publishKotlinMultiplatformPublicationToSoloStudiosRepository \ | |
publishJvmPublicationToSoloStudiosRepository \ | |
publishJsPublicationToSoloStudiosRepository | |
- name: Publish Linux/Multiplatform/JVM/JS artifacts to Sonatype | |
# if: startsWith(github.ref, 'refs/tags') # Only publish to sonatype if tagged | |
run: | | |
./gradlew \ | |
publishLinuxX64PublicationToSonatypeRepository \ | |
publishLinuxArm64PublicationToSonatypeRepository \ | |
publishKotlinMultiplatformPublicationToSonatypeRepository \ | |
publishJvmPublicationToSonatypeRepository \ | |
publishJsPublicationToSonatypeRepository | |
# finalize: | |
# runs-on: ubuntu-latest | |
# needs: [ create-staging-repo, publish-windows, publish-mac, publish-linux ] | |
# if: ${{ always() && needs.create-staging-repo.result == 'success' }} | |
# steps: | |
# - name: Discard | |
# if: ${{ needs.publish-windows.result != 'success' || needs.publish-mac.result != 'success' || needs.publish-linux.result != 'success' }} | |
# uses: nexus-actions/drop-nexus-staging-repo@59443053a1b36f5f71ede68776d73294bf4bfb5e | |
# with: | |
# username: ${{ secrets.SONATYPE_USERNAME }} | |
# password: ${{ secrets.SONATYPE_PASSWORD }} | |
# staging_repository_id: ${{ needs.create-staging-repo.outputs.repository-id }} | |
# - name: Release | |
# if: ${{ needs.publish-windows.result == 'success' && needs.publish-mac.result == 'success' && needs.publish-linux.result == 'success' }} | |
# uses: nexus-actions/release-nexus-staging-repo@f2b4c7f64ecec2cb0d24349182c1bbeda5c4c056 | |
# with: | |
# username: ${{ secrets.SONATYPE_USERNAME }} | |
# password: ${{ secrets.SONATYPE_PASSWORD }} | |
# staging_repository_id: ${{ needs.create-staging-repo.outputs.repository-id }} |