deploy #15
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 # All tags should be fetched. | |
- name: jdk 11 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: 11 | |
distribution: 'temurin' | |
- 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' | |
uses: ffurrer2/extract-release-notes@v2 | |
with: | |
changelog_file: CHANGES.md | |
release_notes_file: RELEASE_NOTES_FOR_LIB.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' | |
uses: ffurrer2/extract-release-notes@v2 | |
with: | |
changelog_file: plugin-gradle/CHANGES.md | |
release_notes_file: RELEASE_NOTES_FOR_PLUGIN_GRADLE.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' | |
uses: ffurrer2/extract-release-notes@v2 | |
with: | |
changelog_file: plugin-maven/CHANGES.md | |
release_notes_file: RELEASE_NOTES_FOR_PLUGIN_MAVEN.md | |
- name: publish all | |
if: "${{ github.event.inputs.to_publish == 'all' }}" | |
run: | | |
gh release create ${{ env.LIB_TAG }} --title '${{ env.LIB_NAME }}' --notes-file RELEASE_NOTES_FOR_LIB.md | |
gh release create ${{ env.PLUGIN_GRADLE_TAG }} --title '${{ env.PLUGIN_GRADLE_NAME }}' --notes-file RELEASE_NOTES_FOR_PLUGIN_GRADLE.md | |
gh release create ${{ env.PLUGIN_MAVEN_TAG }} --title '${{ env.PLUGIN_MAVEN_NAME }}' --notes-file RELEASE_NOTES_FOR_PLUGIN_MAVEN.md | |
- 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-file RELEASE_NOTES_FOR_PLUGIN_GRADLE.md | |
- 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-file RELEASE_NOTES_FOR_PLUGIN_MAVEN.md | |
- name: publish just lib | |
if: "${{ github.event.inputs.to_publish == 'lib' }}" | |
run: | | |
gh release create ${{ env.LIB_TAG }} --title '${{ env.LIB_NAME }}' --notes-file RELEASE_NOTES_FOR_LIB.md |