Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "Qubership Release And Upload to Maven Central or GitHub Packages one component from monorepository",
"description": "Release And Upload to Maven Central or GitHub packages workflow template.",
"categories": [
"Java",
"Automation",
"Maven"
],
"filePatterns": [
"^pom.xml"
]
}
96 changes: 96 additions & 0 deletions workflow-templates/maven-monorepo-component-release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Release Maven Component
run-name: Release ${{ inputs.version-type }} version of ${{ inputs.component }}.
on:
workflow_dispatch:
inputs:
component:
description: 'Component to release'
required: true
type: string
version-type:
description: 'Version bump type'
required: true
type: choice
default: patch
options:
- major
- minor
- patch
version-property:
description: "If version of component is stored in property, provide it's name"
required: false
type: string
publish-target:
description: 'Publishing target'
required: true
type: choice
default: github
options:
- github
- central
dry-run:
description: 'Dry-run (validate build without pushing)'
required: false
type: boolean
default: true

permissions:
contents: write
packages: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout monorepo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
persist-credentials: true

- name: Release Component
id: release
uses: netcracker/qubership-workflow-hub/actions/maven-monorepo-release@v2.3.1
with:
component: ${{ inputs.component }}
version-type: ${{ inputs.version-type }}
version-property: ${{ inputs.version-property }}
publish-target: ${{ inputs.publish-target }}
dry-run: ${{ inputs.dry-run && 'true' || 'false' }}
token: ${{ secrets.GITHUB_TOKEN }}
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
gpg-passphrase: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
maven-username: ${{ inputs.publish-target == 'central' && secrets.MAVEN_CENTRAL_USERNAME || github.actor }}
maven-password: ${{ inputs.publish-target == 'central' && secrets.MAVEN_CENTRAL_PASSWORD || secrets.GITHUB_TOKEN }}
java-version: '21'
maven-profile: ${{ inputs.publish-target }}
update-parent-version: ${{ inputs.component == 'parent' && 'true' || 'false' }}

- name: "Upload all Maven target directories"
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ github.event.repository.name }}
path: "${{ github.event.repository.name }}/**/target" # Upload all target directories in the repository

- name: Report Release
if: success()
run: |
echo "## Release Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Component**: ${{ inputs.component }}" >> $GITHUB_STEP_SUMMARY
echo "**Released Version**: ${{ steps.release.outputs.release-version }}" >> $GITHUB_STEP_SUMMARY
echo "**Artifacts**: ${{ steps.release.outputs.artifacts }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "[View Release](https://github.com/${{ github.repository }}/releases/tag/${{ inputs.component }}-${{ steps.release.outputs.release-version }})" >> $GITHUB_STEP_SUMMARY

- name: "Release-drafter"
if: ${{ inputs.dry-run && 'true' || 'false' }}
uses: netcracker/release-drafter@86f4276a3894b5af70480e826c32fe3648ac6a70 # v1.0.0
with:
config-name: release-drafter-config.yml
publish: true
name: ${{ inputs.component }}-${{ steps.release.outputs.release-version }}
tag: ${{ inputs.component }}-${{ steps.release.outputs.release-version }}
version: ${{ inputs.component }}-${{ steps.release.outputs.release-version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading