Skip to content

Commit

Permalink
Github actions publishing workflow
Browse files Browse the repository at this point in the history
Signed-off-by: solonovamax <[email protected]>
  • Loading branch information
solonovamax committed Sep 4, 2023
1 parent 94b4c01 commit 25088a4
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .github/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# For some reason it won't apply the indent size properly to yml files, so I need this
[*]
indent_size = 2
143 changes: 143 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
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-repository ]
env:
ORG_GRADLE_PROJECT_repositoryId: ${{ steps.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
run: |
./gradlew \
publishMingwX64PublicationToSoloStudiosRepository publishMingwX64PublicationToSonatypeRepository
publish-mac:
name: Publish macOS artifacts
runs-on: macos-latest
needs: [ create-staging-repository ]
env:
ORG_GRADLE_PROJECT_repositoryId: ${{ steps.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
run: |
./gradlew \
publishMacosX64PublicationToSoloStudiosRepository publishMacosX64PublicationToSonatypeRepository \
publishMacosArm64PublicationToSoloStudiosRepository publishMacosArm64PublicationToSonatypeRepository \
publishIosArm64PublicationToSoloStudiosRepository publishIosArm64PublicationToSonatypeRepository \
publishIosX64PublicationToSoloStudiosRepository publishIosX64PublicationToSonatypeRepository \
publishIosSimulatorArm64PublicationToSoloStudiosRepository publishIosSimulatorArm64PublicationToSonatypeRepository \
publishTvosX64PublicationToSoloStudiosRepository publishTvosX64PublicationToSonatypeRepository \
publishTvosArm64PublicationToSoloStudiosRepository publishTvosArm64PublicationToSonatypeRepository \
publishTvosSimulatorArm64PublicationToSoloStudiosRepository publishTvosSimulatorArm64PublicationToSonatypeRepository \
publishWatchosX64PublicationToSoloStudiosRepository publishWatchosX64PublicationToSonatypeRepository \
publishWatchosArm64PublicationToSoloStudiosRepository publishWatchosArm64PublicationToSonatypeRepository \
publishWatchosSimulatorArm64PublicationToSoloStudiosRepository publishWatchosSimulatorArm64PublicationToSonatypeRepository
publish-linux:
name: Publish Linux Artifacts
runs-on: ubuntu-latest
needs: [ create-staging-repository ]
env:
ORG_GRADLE_PROJECT_repositoryId: ${{ steps.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
run: |
./gradlew \
publishLinuxX64PublicationToSoloStudiosRepository publishLinuxX64PublicationToSonatypeRepository \
publishLinuxArm64PublicationToSoloStudiosRepository publishLinuxArm64PublicationToSonatypeRepository \
publishKotlinMultiplatformPublicationToSoloStudiosRepository publishKotlinMultiplatformPublicationToSonatypeRepository \
publishJvmPublicationToSoloStudiosRepository publishJvmPublicationToSonatypeRepository \
publishJsPublicationToSoloStudiosRepository 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.NEXUS_ACTIONS_SONATYPE_USERNAME }}
password: ${{ secrets.NEXUS_ACTIONS_SONATYPE_PASSWORD }}
staging_repository_id: ${{ needs.create_staging_repository.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.NEXUS_ACTIONS_SONATYPE_USERNAME }}
password: ${{ secrets.NEXUS_ACTIONS_SONATYPE_PASSWORD }}
staging_repository_id: ${{ needs.create_staging_repository.outputs.repository_id }}

0 comments on commit 25088a4

Please sign in to comment.