intellij-ideaintellij-idea-pluginintellij-pluginsjetbrains-pluginintellij-pluginintellijintellij-platform
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.3 KiB
100 lines
3.3 KiB
# GitHub Actions Workflow created for handling the release process based on the draft release prepared with the Build workflow. |
|
# Running the publishPlugin task requires all the following secrets to be provided: PUBLISH_TOKEN, PRIVATE_KEY, PRIVATE_KEY_PASSWORD, CERTIFICATE_CHAIN. |
|
# See https://plugins.jetbrains.com/docs/intellij/plugin-signing.html for more information. |
|
|
|
name: Release |
|
on: |
|
release: |
|
types: [prereleased, released] |
|
|
|
jobs: |
|
|
|
# Prepare and publish the plugin to JetBrains Marketplace repository |
|
release: |
|
name: Publish Plugin |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: write |
|
pull-requests: write |
|
steps: |
|
|
|
# Free GitHub Actions Environment Disk Space |
|
- name: Maximize Build Space |
|
uses: jlumbroso/free-disk-space@v1.3.1 |
|
with: |
|
tool-cache: false |
|
large-packages: false |
|
|
|
# Check out the current repository |
|
- name: Fetch Sources |
|
uses: actions/checkout@v5 |
|
with: |
|
ref: ${{ github.event.release.tag_name }} |
|
|
|
# Set up the Java environment for the next steps |
|
- name: Setup Java |
|
uses: actions/setup-java@v5 |
|
with: |
|
distribution: zulu |
|
java-version: 21 |
|
|
|
# Setup Gradle |
|
- name: Setup Gradle |
|
uses: gradle/actions/setup-gradle@v5 |
|
with: |
|
cache-read-only: true |
|
|
|
# Update the Unreleased section with the current release note |
|
- name: Patch Changelog |
|
if: ${{ github.event.release.body != '' }} |
|
env: |
|
CHANGELOG: ${{ github.event.release.body }} |
|
run: | |
|
RELEASE_NOTE="./build/tmp/release_note.txt" |
|
mkdir -p "$(dirname "$RELEASE_NOTE")" |
|
echo "$CHANGELOG" > $RELEASE_NOTE |
|
|
|
./gradlew patchChangelog --release-note-file=$RELEASE_NOTE |
|
|
|
# Publish the plugin to JetBrains Marketplace |
|
- name: Publish Plugin |
|
env: |
|
PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }} |
|
CERTIFICATE_CHAIN: ${{ secrets.CERTIFICATE_CHAIN }} |
|
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} |
|
PRIVATE_KEY_PASSWORD: ${{ secrets.PRIVATE_KEY_PASSWORD }} |
|
run: ./gradlew publishPlugin |
|
|
|
# Upload an artifact as a release asset |
|
- name: Upload Release Asset |
|
env: |
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
run: gh release upload ${{ github.event.release.tag_name }} ./build/distributions/* |
|
|
|
# Create a pull request |
|
- name: Create Pull Request |
|
if: ${{ github.event.release.body != '' }} |
|
env: |
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
run: | |
|
VERSION="${{ github.event.release.tag_name }}" |
|
BRANCH="changelog-update-$VERSION" |
|
LABEL="release changelog" |
|
|
|
git config user.email "action@github.com" |
|
git config user.name "GitHub Action" |
|
|
|
git checkout -b $BRANCH |
|
git commit -am "Changelog update - $VERSION" |
|
git push --set-upstream origin $BRANCH |
|
|
|
gh label create "$LABEL" \ |
|
--description "Pull requests with release changelog update" \ |
|
--force \ |
|
|| true |
|
|
|
gh pr create \ |
|
--title "Changelog update - \`$VERSION\`" \ |
|
--body "Current pull request contains patched \`CHANGELOG.md\` file for the \`$VERSION\` version." \ |
|
--label "$LABEL" \ |
|
--head $BRANCH
|
|
|