deploy #10
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
# GITHUB_TOKEN | |
# NEXUS_USER | |
# NEXUS_PASS64 (base64 NOTE: `base64` and `openssl base64` failed, had to use Java | |
# byte[] data = "{{password}}".getBytes(StandardCharsets.UTF_8); | |
# String encoded = new String(Base64.getEncoder().encode(data), StandardCharsets.UTF_8); | |
# System.out.println(encoded); | |
# GPG_PASSPHRASE | |
# GPG_KEY64 (base64) | |
# gpg --export-secret-keys --armor KEY_ID | openssl base64 | pbcopy | |
# GRADLE_KEY | |
# GRADLE_SECRET | |
name: deploy | |
on: | |
workflow_dispatch: | |
inputs: | |
to_publish: | |
description: 'What to publish' | |
required: true | |
default: 'all' | |
type: choice | |
options: | |
- plugin-gradle | |
- plugin-maven | |
- all | |
- lib | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
name: deploy | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
ORG_GRADLE_PROJECT_nexus_user: ${{ secrets.NEXUS_USER }} | |
ORG_GRADLE_PROJECT_nexus_pass64: ${{ secrets.NEXUS_PASS64 }} | |
ORG_GRADLE_PROJECT_gpg_passphrase: ${{ secrets.GPG_PASSPHRASE }} | |
ORG_GRADLE_PROJECT_gpg_key64: ${{ secrets.GPG_KEY64 }} | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: jdk 11 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 11 | |
distribution: 'temurin' | |
- name: gradle caching | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
gradle-home-cache-cleanup: true | |
- name: Generate release name for lib | |
if: github.event.inputs.to_publish == 'all' || github.event.inputs.to_publish == 'lib' | |
run: | | |
# Find the latest tag in the lib/ namespace | |
export LIB_TAG=$(git tag --sort=-creatordate --list 'lib/*' | head -n 1) | |
echo "LIB_TAG=$LIB_TAG" >> $GITHUB_ENV | |
# Generate the release name looks like "Lib 1.2.3" | |
echo "LIB_NAME=Lib $(echo $LIB_TAG | cut -d'/' -f2)" >> $GITHUB_ENV | |
- name: Extract release notes for lib | |
if: github.event.inputs.to_publish == 'all' || github.event.inputs.to_publish == 'lib' | |
id: extract-release-notes-for-lib | |
uses: ffurrer2/extract-release-notes@v2 | |
with: | |
changelog_file: CHANGES.md | |
- name: Generate release name for Gradle plugin | |
if: github.event.inputs.to_publish == 'all' || github.event.inputs.to_publish == 'plugin-gradle' | |
run: | | |
# Find the latest tag in the gradle/ namespace | |
export PLUGIN_GRADLE_TAG=$(git tag --sort=-creatordate --list 'gradle/*' | head -n 1) | |
echo "PLUGIN_GRADLE_TAG=$PLUGIN_GRADLE_TAG" >> $GITHUB_ENV | |
# Generate the release name looks like "Gradle Plugin 1.2.3" | |
echo "PLUGIN_GRADLE_NAME=Gradle Plugin $(echo $PLUGIN_GRADLE_TAG | cut -d'/' -f2)" >> $GITHUB_ENV | |
- name: Extract release notes for Gradle plugin | |
if: github.event.inputs.to_publish == 'all' || github.event.inputs.to_publish == 'plugin-gradle' | |
id: extract-release-notes-for-plugin-gradle | |
uses: ffurrer2/extract-release-notes@v2 | |
with: | |
changelog_file: plugin-gradle/CHANGES.md | |
- name: Generate release name for Maven plugin | |
if: github.event.inputs.to_publish == 'all' || github.event.inputs.to_publish == 'plugin-maven' | |
run: | | |
# Find the latest tag in the maven/ namespace | |
export PLUGIN_MAVEN_TAG=$(git tag --sort=-creatordate --list 'maven/*' | head -n 1) | |
echo "PLUGIN_MAVEN_TAG=$PLUGIN_MAVEN_TAG" >> $GITHUB_ENV | |
# Generate the release name looks like "Maven Plugin 1.2.3" | |
echo "PLUGIN_MAVEN_NAME=Maven Plugin $(echo $PLUGIN_MAVEN_TAG | cut -d'/' -f2)" >> $GITHUB_ENV | |
- name: Extract release notes for Maven plugin | |
if: github.event.inputs.to_publish == 'all' || github.event.inputs.to_publish == 'plugin-maven' | |
id: extract-release-notes-for-plugin-maven | |
uses: ffurrer2/extract-release-notes@v2 | |
with: | |
changelog_file: plugin-maven/CHANGES.md | |
- name: publish all | |
if: "${{ github.event.inputs.to_publish == 'all' }}" | |
run: | | |
gh release create ${{ env.LIB_TAG }} --title "${{ env.LIB_NAME }}" --notes "${{ steps.extract-release-notes-for-lib.outputs.release_notes }}" | |
gh release create ${{ env.PLUGIN_GRADLE_TAG }} --title "${{ env.PLUGIN_GRADLE_NAME }}" --notes "${{ steps.extract-release-notes-for-plugin-gradle.outputs.release_notes }}" | |
gh release create ${{ env.PLUGIN_MAVEN_TAG }} --title "${{ env.PLUGIN_MAVEN_NAME }}" --notes "${{ steps.extract-release-notes-for-plugin-maven.outputs.release_notes }}" | |
- name: publish just plugin-gradle | |
if: "${{ github.event.inputs.to_publish == 'plugin-gradle' }}" | |
run: | | |
gh release create ${{ env.PLUGIN_GRADLE_TAG }} --title "${{ env.PLUGIN_GRADLE_NAME }}" --notes "${{ steps.extract-release-notes-for-plugin-gradle.outputs.release_notes }}" | |
- name: publish just plugin-maven | |
if: "${{ github.event.inputs.to_publish == 'plugin-maven' }}" | |
run: | | |
gh release create ${{ env.PLUGIN_MAVEN_TAG }} --title "${{ env.PLUGIN_MAVEN_NAME }}" --notes "${{ steps.extract-release-notes-for-plugin-maven.outputs.release_notes }}" | |
- name: publish just lib | |
if: "${{ github.event.inputs.to_publish == 'lib' }}" | |
run: | | |
gh release create ${{ env.LIB_TAG }} --title "${{ env.LIB_NAME }}" --notes "${{ steps.extract-release-notes-for-lib.outputs.release_notes }}" |