1# When a new release is created, publish artifacts to Maven Central / JetBrains Marketplace / etc.. 2# 3# About secrets used here: 4# 1. OSSRH_USERNAME, OSSRH_TOKEN: token obtained from https://oss.sonatype.org/ 5# 2. OSSRH_GPG_SECRET_KEY - private key for signing Maven artifacts 6# 3. OSSRH_GPG_SECRET_KEY_PASSWORD - password for unlocking OSSRH_GPG_SECRET_KEY 7# 4. JETBRAINS_MARKETPLACE_TOKEN - token obtained from https://plugins.jetbrains.com/author/me/tokens 8 9name: Publish package to Maven Central and JetBrains Marketplace 10on: 11 release: 12 types: [created] 13 workflow_dispatch: 14 inputs: 15 release_tag: 16 description: 'Release tag' 17 required: true 18 type: string 19jobs: 20 publish: 21 runs-on: ubuntu-latest 22 steps: 23 - uses: actions/checkout@v4 24 with: 25 ref: ${{ github.events.release.tag_name || inputs.release_tag || github.ref }} 26 - name: Set up Maven Central Repository 27 uses: actions/setup-java@v4 28 with: 29 java-version: 17 30 server-id: ossrh 31 server-username: MAVEN_USERNAME 32 server-password: MAVEN_PASSWORD 33 distribution: zulu 34 - id: install-secret-key 35 name: Install gpg secret key 36 run: | 37 cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import 38 gpg --list-secret-keys --keyid-format LONG 39 - id: publish-to-central 40 name: Publish to Maven Central Repository 41 env: 42 MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} 43 MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} 44 run: | 45 mvn \ 46 --no-transfer-progress \ 47 --batch-mode \ 48 -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \ 49 -Prelease clean deploy 50 - name: Publish IntelliJ plugin to JetBrains Marketplace 51 run: | 52 pushd ktfmt_idea_plugin 53 ./gradlew publishPlugin --stacktrace --no-daemon 54 popd 55 env: 56 JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }} 57 - uses: actions/setup-node@v4 58 - name: Deploy website 59 run: | 60 KTFMT_TMP_DIR=$(mktemp -d) 61 62 pushd website 63 npm install . 64 KTFMT_WEBSITE_OUTPUT_DIR="$KTFMT_TMP_DIR" gulp build-website 65 popd 66 67 git fetch 68 git checkout gh-pages 69 git config user.email ktfmt@facebook.com 70 git config user.name ktfmt 71 72 rm -rf * 73 cp -R "$KTFMT_TMP_DIR"/* . 74 75 git add . 76 git commit -m "Publish website" 77 git push --force 78 79 rm -rf "$KTFMT_TMP_DIR" 80