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: stringe 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@v1 28 with: 29 java-version: 11 30 server-id: ossrh 31 server-username: MAVEN_USERNAME 32 server-password: MAVEN_PASSWORD 33 - id: install-secret-key 34 name: Install gpg secret key 35 run: | 36 cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import 37 gpg --list-secret-keys --keyid-format LONG 38 - id: publish-to-central 39 name: Publish to Maven Central Repository 40 env: 41 MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} 42 MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} 43 run: | 44 mvn \ 45 --no-transfer-progress \ 46 --batch-mode \ 47 -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \ 48 -Prelease clean deploy 49 - name: Publish IntelliJ plugin to JetBrains Marketplace 50 run: | 51 pushd ktfmt_idea_plugin 52 ./gradlew publishPlugin --stacktrace 53 popd 54 env: 55 JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }} 56 - uses: actions/setup-node@v2 57 - name: Deploy website 58 run: | 59 KTFMT_TMP_DIR=$(mktemp -d) 60 61 pushd website 62 npm install . 63 KTFMT_WEBSITE_OUTPUT_DIR="$KTFMT_TMP_DIR" gulp build-website 64 popd 65 66 git fetch 67 git checkout gh-pages 68 git config user.email ktfmt@facebook.com 69 git config user.name ktfmt 70 71 rm -rf * 72 cp -R "$KTFMT_TMP_DIR"/* . 73 74 git add . 75 git commit -m "Publish website" 76 git push --force 77 78 rm -rf "$KTFMT_TMP_DIR" 79