Skip to content

deploy

deploy #10

Workflow file for this run

# 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 }}"