• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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]
13jobs:
14  publish:
15    runs-on: ubuntu-latest
16    steps:
17      - uses: actions/checkout@v2
18      - name: Set up Maven Central Repository
19        uses: actions/setup-java@v1
20        with:
21          java-version: 11
22          server-id: ossrh
23          server-username: MAVEN_USERNAME
24          server-password: MAVEN_PASSWORD
25      - id: install-secret-key
26        name: Install gpg secret key
27        run: |
28          cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import
29          gpg --list-secret-keys --keyid-format LONG
30      - id: publish-to-central
31        name: Publish to Maven Central Repository
32        env:
33          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
34          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
35        run: |
36          mvn \
37            --no-transfer-progress \
38            --batch-mode \
39            -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \
40            -Prelease clean deploy
41      - name: Publish IntelliJ plugin to JetBrains Marketplace
42        run: |
43          pushd ktfmt_idea_plugin
44          ./gradlew publishPlugin --stacktrace
45          popd
46        env:
47          JETBRAINS_MARKETPLACE_TOKEN: ${{ secrets.JETBRAINS_MARKETPLACE_TOKEN }}
48      - uses: actions/setup-node@v2
49      - name: Deploy website
50        run: |
51          KTFMT_TMP_DIR=$(mktemp -d)
52
53          pushd website
54          npm install .
55          KTFMT_WEBSITE_OUTPUT_DIR="$KTFMT_TMP_DIR" gulp build-website
56          popd
57
58          git fetch
59          git checkout gh-pages
60          git config user.email ktfmt@facebook.com
61          git config user.name ktfmt
62
63          rm -rf *
64          cp -R "$KTFMT_TMP_DIR"/* .
65
66          git add .
67          git commit -m "Publish website"
68          git push --force
69
70          rm -rf "$KTFMT_TMP_DIR"
71