Publish package to Maven Central and Gradle Plugin Portal #90
Workflow file for this run
This file contains hidden or 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: Publish package to Maven Central and Gradle Plugin Portal | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Release version' | |
| default: '' | |
| jobs: | |
| publish: | |
| runs-on: ${{ matrix.operating-system }} | |
| permissions: | |
| packages: write | |
| contents: write | |
| pull-requests: write | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| operating-system: [ ubuntu-latest ] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-java@v4 | |
| if: runner.os != 'Linux' | |
| with: | |
| distribution: 'corretto' | |
| java-version: '25' | |
| cache: 'gradle' | |
| - uses: cachix/install-nix-action@v31 | |
| if: runner.os == 'Linux' | |
| with: | |
| github_access_token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Read and update version | |
| shell: bash | |
| run: | | |
| if [[ -n "${{ github.event.inputs.version }}" ]]; then | |
| BASE_VERSION="${{ github.event.inputs.version }}" | |
| else | |
| BASE_VERSION=$(grep "^version=" gradle.properties | cut -d'=' -f2) | |
| fi | |
| echo "VERSION=${BASE_VERSION}" >> $GITHUB_ENV | |
| echo "Version: $BASE_VERSION" | |
| - name: Upload docker image | |
| if: runner.os == 'Linux' | |
| run: | | |
| nix build .#dockerImage | |
| docker load < result | |
| echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
| IMAGE_ID=ghcr.io/${{ github.repository_owner }}/fray | |
| echo IMAGE_ID=$IMAGE_ID | |
| echo VERSION=$VERSION | |
| docker images | |
| docker tag fray:latest $IMAGE_ID:$VERSION | |
| docker push $IMAGE_ID:$VERSION | |
| - name: Start develop enviroment | |
| run: nix develop | |
| - name: Create jreleaser work directory | |
| run: mkdir -p ./build/jreleaser | |
| - name: Create stage deploy (MacOs) | |
| if: runner.os == 'macOS' | |
| run: ./gradlew :jvmti:publish -Pversion=$VERSION | |
| - name: Create stage deploy (Windows) | |
| if: runner.os == 'Windows' | |
| shell: bash | |
| run: ./gradlew :jvmti:publish -Pversion=$VERSION | |
| - name: Create stage deploy (Linux) | |
| if: runner.os == 'Linux' | |
| run: ./gradlew publish -Pversion=$VERSION | |
| - name: Publish to Maven Central | |
| continue-on-error: true | |
| shell: bash | |
| run: ./gradlew jreleaserFullRelease -Pversion=$VERSION | |
| env: | |
| JRELEASER_MAVENCENTRAL_USERNAME: ${{secrets.JRELEASER_MAVENCENTRAL_USERNAME }} | |
| JRELEASER_MAVENCENTRAL_PASSWORD: ${{secrets.JRELEASER_MAVENCENTRAL_PASSWORD}} | |
| JRELEASER_GPG_PASSPHRASE: ${{secrets.JRELEASER_GPG_PASSPHRASE}} | |
| JRELEASER_GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} | |
| JRELEASER_GPG_PUBLIC_KEY: ${{secrets.JRELEASER_GPG_PUBLIC_KEY}} | |
| JRELEASER_GPG_SECRET_KEY: ${{secrets.JRELEASER_GPG_SECRET_KEY}} | |
| - name: Publish to Gradle Plugins Portal | |
| if: runner.os == 'Linux' | |
| run: ./gradlew publishPlugins -Pversion=$VERSION | |
| env: | |
| GRADLE_PUBLISH_KEY: ${{secrets.GRADLE_PUBLISH_KEY}} | |
| GRADLE_PUBLISH_SECRET: ${{secrets.GRADLE_PUBLISH_SECRET}} | |
| - name: Publish to Intellij Marketplace | |
| if: runner.os == 'Linux' | |
| run: ./gradlew publishPlugin -Pversion=$VERSION | |
| env: | |
| ORG_GRADLE_PROJECT_intellijPlatformPublishingToken: ${{secrets.ORG_GRADLE_PROJECT_intellijPlatformPublishingToken}} | |
| - name: Update versions in the project | |
| if: runner.os == 'Linux' | |
| run: | | |
| LATEST_VERSION=${{ env.VERSION }} | |
| IFS='.' read -r MAJOR MINOR PATCH <<< "$LATEST_VERSION" | |
| NEW_PATCH=$((PATCH + 1)) | |
| NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH-SNAPSHOT" | |
| sed -i "s/id(\"org.pastalab.fray.gradle\") version \".*\"/id(\"org.pastalab.fray.gradle\") version \"$LATEST_VERSION\"/" README.md | |
| sed -i "s|<version>.*</version>|<version>$LATEST_VERSION</version>|" README.md | |
| sed -i "s/id(\"org.pastalab.fray.gradle\") version \".*\"/id(\"org.pastalab.fray.gradle\") version \"$LATEST_VERSION\"/" docs/usage.md | |
| sed -i "s|\(FROM ghcr\.io/cmu-pasta/fray:\)[^ ]*|\1$LATEST_VERSION|" docs/usage.md | |
| sed -i "s|fray-core-[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*-SNAPSHOT-all\.jar|fray-core-$LATEST_VERSION-SNAPSHOT-all.jar|g" docs/usage.md | |
| sed -i "s/^version=.*/version=$NEW_VERSION/" gradle.properties | |
| sed -i "s/\\(\\s*version\\s*=\\s*\\)\"[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*.*\";/\\1\"$NEW_VERSION\";/" flake.nix | |
| - name: Release | |
| uses: softprops/action-gh-release@v2 | |
| if: runner.os == 'Linux' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: "v${{ env.VERSION }}" | |
| generate_release_notes: true | |
| make_latest: true | |
| - name: Create Pull Request | |
| uses: peter-evans/create-pull-request@v4 | |
| if: runner.os == 'Linux' | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} # You need to create your own token with pull request rights | |
| commit-message: update readme | |
| title: Update readme | |
| body: Update readme to reflect release changes | |
| branch: update-readme | |
| base: main |