Prepare Jib release #60
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
name: Prepare Jib release | |
on: | |
workflow_dispatch: | |
inputs: | |
project: | |
description: Jib project to release | |
required: true | |
default: (build-plan | core | maven | gradle | extension-common | maven-extension | gradle-extension) | |
release_version: | |
description: new release version | |
required: true | |
default: (for example, 0.1.0) | |
jobs: | |
release: | |
name: Prepare Jib release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Check input | |
run: | | |
echo '* input project: "${{ github.event.inputs.project }}"' | |
case ${{ github.event.inputs.project }} in | |
build-plan|core|maven|gradle|extension-common|maven-extension|gradle-extension) ;; | |
*) echo 'invalid input project name "${{ github.event.inputs.project }}"' | |
exit 1 | |
;; | |
esac | |
if [[ ! "${{ github.event.inputs.release_version }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
echo 'version "${{ github.event.inputs.release_version }}" not in ###.###.### format' | |
exit 1 | |
fi | |
- name: Build project | |
run: | | |
# TODO: run integration test? (Requries auth with GCP.) | |
./gradlew clean build --stacktrace | |
- name: Run Gradle release | |
run: | | |
git checkout -b ${{ github.event.inputs.project }}-release-v${{ github.event.inputs.release_version }} | |
git config user.email ${{ github.actor }}@users.noreply.github.com | |
git config user.name ${{ github.actor }} | |
PROJECT=$( case ${{ github.event.inputs.project }} in | |
extension-common) echo jib-plugins-extension-common ;; | |
maven-extension) echo jib-maven-plugin-extension-api ;; | |
gradle-extension) echo jib-gradle-plugin-extension-api ;; | |
maven|gradle) echo jib-${{ github.event.inputs.project }}-plugin ;; | |
*) echo jib-${{ github.event.inputs.project }} ;; | |
esac ) | |
# This creates the tag (e.g., "v0.1.0-gradle") and pushes the updated | |
# branch (e.g., "gradle-release-v0.1.0") and the new tag. | |
./gradlew "${PROJECT}":release \ | |
-Prelease.useAutomaticVersion=true \ | |
-Prelease.releaseVersion=${{ github.event.inputs.release_version }} | |
- name: Create pull request | |
uses: repo-sync/[email protected] | |
id: create-pr | |
with: | |
# Use a personal token to file a PR to trigger other workflows (e.g., unit tests). | |
# Save your access token as GA_RELEASE_PR_PERSONAL_TOKEN. | |
# https://docs.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token | |
# https://docs.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets | |
github_token: ${{ secrets.GA_RELEASE_PR_PERSONAL_TOKEN }} | |
source_branch: ${{ github.event.inputs.project }}-release-v${{ github.event.inputs.release_version }} | |
pr_title: "${{ github.event.inputs.project }} release v${{ github.event.inputs.release_version }}" | |
pr_body: "To be merged after the release is complete." | |
pr_label: "PR: Merge After Release" | |
- name: Draft Maven/Gradle GitHub release | |
uses: actions/[email protected] | |
id: create-plugin-release | |
if: ${{ github.event.inputs.project == 'maven' || github.event.inputs.project == 'gradle' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: v${{ github.event.inputs.release_version }}-${{ github.event.inputs.project }} | |
release_name: jib-${{ github.event.inputs.project }}-plugin v${{ github.event.inputs.release_version }} | |
draft: true | |
body: | | |
**Run `./jib-${{ github.event.inputs.project }}-plugin/scripts/update_gcs_latest.sh ${{ github.event.inputs.release_version }}` | |
when the release is complete to update the latest version string on GCS.** | |
--- | |
### Major Changes | |
See [CHANGELOG.md](https://github.com/GoogleContainerTools/jib/blob/master/jib-${{ github.event.inputs.project }}-plugin/CHANGELOG.md) for more details. | |
- name: Create Maven/Gradle release checklist issue | |
uses: JasonEtco/[email protected] | |
if: ${{ github.event.inputs.project == 'maven' || github.event.inputs.project == 'gradle' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RELEASE_NAME: v${{ github.event.inputs.release_version }}-${{ github.event.inputs.project }} | |
CHANGELOG_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-${{ github.event.inputs.project }}-plugin/CHANGELOG.md | |
README_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-${{ github.event.inputs.project }}-plugin/README.md | |
GCS_UPDATE_SCRIPT: "`./jib-${{ github.event.inputs.project }}-plugin/scripts/update_gcs_latest.sh ${{ github.event.inputs.release_version }}`" | |
RELEASE_DRAFT: ${{ steps.create-plugin-release.outputs.html_url }} | |
RELEASE_PR: ${{steps.create-pr.outputs.pr_url}} | |
with: | |
filename: .github/RELEASE_TEMPLATES/plugin_release_checklist.md | |
- name: Draft Core GitHub release | |
uses: actions/[email protected] | |
id: create-core-release | |
if: ${{ github.event.inputs.project == 'core' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: v${{ github.event.inputs.release_version }}-core | |
release_name: jib-core v${{ github.event.inputs.release_version }} | |
draft: true | |
body: | | |
### Major Changes | |
See [CHANGELOG.md](https://github.com/GoogleContainerTools/jib/blob/master/jib-core/CHANGELOG.md) for more details. | |
- name: Create Core release checklist issue | |
uses: JasonEtco/[email protected] | |
if: ${{ github.event.inputs.project == 'core' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
RELEASE_NAME: v${{ github.event.inputs.release_version }}-core | |
CHANGELOG_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-core/CHANGELOG.md | |
README_URL: https://github.com/GoogleContainerTools/jib/blob/master/jib-core/README.md | |
RELEASE_DRAFT: ${{ steps.create-core-release.outputs.html_url }} | |
RELEASE_PR: ${{steps.create-pr.outputs.pr_url}} | |
with: | |
filename: .github/RELEASE_TEMPLATES/core_release_checklist.md |