|
| 1 | +name: DEPLOY |
| 2 | + |
| 3 | +on: |
| 4 | + push: |
| 5 | + tags: |
| 6 | + - 'v*' |
| 7 | + workflow_dispatch: |
| 8 | + inputs: |
| 9 | + forced_version: |
| 10 | + description: 'FORCED_VERSION to use' |
| 11 | + required: true |
| 12 | + type: string |
| 13 | + |
| 14 | +#permissions: |
| 15 | +# contents: write |
| 16 | +# discussions: write |
| 17 | + |
| 18 | +env: |
| 19 | + CI: true |
| 20 | + FORCED_VERSION: ${{ inputs.forced_version || github.ref }} |
| 21 | + ORG_GRADLE_PROJECT_signingKey: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGKEY }} |
| 22 | + ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }} |
| 23 | + SONATYPE_USERNAME: ${{ secrets.SONATYPEUSERNAME }} |
| 24 | + SONATYPE_PASSWORD: ${{ secrets.SONATYPEPASSWORD }} |
| 25 | + JAVA_VERSION: 17 |
| 26 | + JAVA_DISTRIBUTION: zulu |
| 27 | + |
| 28 | +jobs: |
| 29 | + ##start: |
| 30 | + ## runs-on: ubuntu-latest |
| 31 | + ## outputs: |
| 32 | + ## stagedRepositoryId: ${{ steps.releaseStep.outputs.stagedRepositoryId }} |
| 33 | + ## steps: |
| 34 | + ## - { name: Checkout, uses: actions/checkout@v3 } |
| 35 | + ## - { name: Set up JDK, uses: actions/setup-java@v3, with: { distribution: "${{ env.JAVA_DISTRIBUTION }}", java-version: "${{ env.JAVA_VERSION }}" } } |
| 36 | + ## - { name: Prepare Gradle, uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 } # https://github.com/gradle/actions/releases/tag/v3.5.0 |
| 37 | + ## - { id: releaseStep, name: Start Maven Central Staging Repository, run: ./gradlew --no-configuration-cache startReleasingMavenCentral } |
| 38 | + |
| 39 | + publish: |
| 40 | + strategy: |
| 41 | + fail-fast: false |
| 42 | + matrix: |
| 43 | + include: |
| 44 | + - { os: ubuntu-latest, publishTask: "publishLinuxX64PublicationToMavenLocal publishLinuxArm64PublicationToMavenLocal" } |
| 45 | + - { os: ubuntu-latest, publishTask: "publishMingwX64PublicationToMavenLocal" } |
| 46 | + - { os: ubuntu-latest, publishTask: "publishAndroidDebugPublicationToMavenLocal publishAndroidReleasePublicationToMavenLocal" } |
| 47 | + - { os: ubuntu-latest, publishTask: "publishKotlinMultiplatformPublicationToMavenLocal publishJvmPublicationToMavenLocal" } |
| 48 | + - { os: ubuntu-latest, publishTask: "publishJsPublicationToMavenLocal publishWasmJsPublicationToMavenLocal" } |
| 49 | + - { os: macos-latest, publishTask: "publishMacosX64PublicationToMavenLocal publishMacosArm64PublicationToMavenLocal" } |
| 50 | + - { os: macos-latest, publishTask: "publishTvosArm64PublicationToMavenLocal publishTvosSimulatorArm64PublicationToMavenLocal publishTvosX64PublicationToMavenLocal" } |
| 51 | + - { os: macos-latest, publishTask: "publishIosArm64PublicationToMavenLocal publishIosSimulatorArm64PublicationToMavenLocal publishIosX64PublicationToMavenLocal" } |
| 52 | + - { os: macos-latest, publishTask: "publishWatchosArm64PublicationToMavenLocal publishWatchosArm32PublicationToMavenLocal publishWatchosDeviceArm64PublicationToMavenLocal publishWatchosSimulatorArm64PublicationToMavenLocal" } |
| 53 | + timeout-minutes: 300 |
| 54 | + runs-on: ${{ matrix.os }} |
| 55 | + ##needs: [start] |
| 56 | + ##env: { stagedRepositoryId: "${{ needs.start.outputs.stagedRepositoryId }}" } |
| 57 | + steps: |
| 58 | + ##- { name: Print stagedRepositoryId=$stagedRepositoryId, run: "echo 'stagedRepositoryId: $stagedRepositoryId'" } |
| 59 | + - name: Replace MavenLocal with MavenLocal |
| 60 | + id: replace |
| 61 | + run: | |
| 62 | + publishTaskLocal=$(echo "${{ matrix.publishTask }}" | tr -d '\n') |
| 63 | + publishTaskRepository=$(echo "${{ matrix.publishTask }}" | sed 's/MavenLocal/MavenRepository/g' | tr -d '\n') |
| 64 | + echo "publishTaskLocal=${publishTaskLocal}" >> $GITHUB_ENV |
| 65 | + echo "publishTaskRepository=${publishTaskRepository}" >> $GITHUB_ENV |
| 66 | + - { name: Print publishTaskLocal, run: "echo 'publishTaskLocal: ${{ env.publishTaskLocal }}'" } |
| 67 | + - { name: Print publishTaskRepository, run: "echo 'publishTaskRepository: ${{ env.publishTaskRepository }}'" } |
| 68 | + - { name: Checkout, uses: actions/checkout@v3 } |
| 69 | + - { name: Use Node.js 20.x, uses: actions/setup-node@v3, with: { node-version: 20.x } } |
| 70 | + - { name: Set up JDK, uses: actions/setup-java@v3, with: { distribution: "${{ env.JAVA_DISTRIBUTION }}", java-version: "${{ env.JAVA_VERSION }}" } } |
| 71 | + - { name: Prepare Gradle, uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 } # https://github.com/gradle/actions/releases/tag/v3.5.0 |
| 72 | + - { name: Initialize Gradle, run: ./gradlew --no-configuration-cache } |
| 73 | + - { name: Publish Publications To Maven Local, run: "./gradlew --no-configuration-cache --parallel ${{ env.publishTaskLocal }}" } |
| 74 | + - { name: Start Maven Central Staging Repository, run: ./gradlew --no-configuration-cache startReleasingMavenCentral } |
| 75 | + - { name: Publish Publications To Maven Repository, run: "./gradlew --no-configuration-cache --parallel --max-workers=8 ${{ env.publishTaskRepository }}" } |
| 76 | + - { name: Release to Maven Central, run: ./gradlew --no-configuration-cache releaseMavenCentral } |
| 77 | + |
| 78 | + ##finalize: |
| 79 | + ## runs-on: ubuntu-latest |
| 80 | + ## needs: [start, publish] |
| 81 | + ## env: { stagedRepositoryId: "${{ needs.start.outputs.stagedRepositoryId }}" } |
| 82 | + ## steps: |
| 83 | + ## - { name: Checkout, uses: actions/checkout@v3 } |
| 84 | + ## - { name: Use Node.js 20.x, uses: actions/setup-node@v3, with: { node-version: 20.x } } |
| 85 | + ## - { name: Set up JDK, uses: actions/setup-java@v3, with: { distribution: "${{ env.JAVA_DISTRIBUTION }}", java-version: "${{ env.JAVA_VERSION }}" } } |
| 86 | + ## - { name: Prepare Gradle, uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 } # https://github.com/gradle/actions/releases/tag/v3.5.0 |
| 87 | + ## - { name: Initialize Gradle, run: ./gradlew --no-configuration-cache } |
| 88 | + ## - { name: Release to Maven Central, run: ./gradlew --no-configuration-cache releaseMavenCentral } |
0 commit comments