From 0d48f086c29f6d19d3359e0292be399fb2f355cc Mon Sep 17 00:00:00 2001 From: Bogdan Kobylynskyi <92bogdan@gmail.com> Date: Thu, 4 Mar 2021 19:38:19 -0500 Subject: [PATCH] Fix release workflow --- .github/workflows/github.yml | 32 ++-- .github/workflows/release.yml | 138 ++++++++++-------- plugins/maven/.maven.xml | 27 ++++ .../graphql-java-codegen-maven-plugin/pom.xml | 14 +- .../update-release-version-in-build-files.sh | 12 +- scripts/update-release-version-in-readme.sh | 3 +- 6 files changed, 143 insertions(+), 83 deletions(-) create mode 100644 plugins/maven/.maven.xml diff --git a/.github/workflows/github.yml b/.github/workflows/github.yml index 5562f1c5..8e27f8de 100644 --- a/.github/workflows/github.yml +++ b/.github/workflows/github.yml @@ -47,22 +47,22 @@ jobs: - name: Build library run: ./gradlew build publishToMavenLocal publishAllPublicationsToIvyRepository --warning-mode all - - name: Build gradle plugin - run: ./gradlew -p plugins/gradle/graphql-java-codegen-gradle-plugin build publishToMavenLocal --warning-mode all - - name: Build maven plugin working-directory: plugins/maven/graphql-java-codegen-maven-plugin run: mvn install - - name: Build sbt plugin - working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin - run: sbt compile publishLocal --debug + - name: Build maven example-server + working-directory: plugins/maven/example-server + run: mvn package - - name: Build sbt test - working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin - run: sbt scripted + - name: Build maven example-client + working-directory: plugins/maven/example-client + run: mvn package - - name: Build gradle example-server --warning-mode all + - name: Build gradle plugin + run: ./gradlew -p plugins/gradle/graphql-java-codegen-gradle-plugin build publishToMavenLocal --warning-mode all + + - name: Build gradle example-server run: ./gradlew -p plugins/gradle/example-server test --warning-mode all - name: Build gradle example-client @@ -71,13 +71,13 @@ jobs: - name: Build gradle example-client-kotlin run: ./gradlew -p plugins/gradle/example-client-kotlin build --warning-mode all - - name: Build maven example-server - working-directory: plugins/maven/example-server - run: mvn package + - name: Build sbt plugin + working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin + run: sbt compile publishLocal --debug - - name: Build maven example-client - working-directory: plugins/maven/example-client - run: mvn package + - name: Build sbt test + working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin + run: sbt scripted sonar: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3104be5c..110bb0a9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,19 +13,19 @@ on: required: true publish_library: description: 'Publish library' - default: 'true' + default: 'Y' required: true publish_gradle_plugin: description: 'Publish Gradle Plugin' - default: 'true' + default: 'Y' required: true publish_maven_plugin: description: 'Publish Maven Plugin' - default: 'true' + default: 'Y' required: true publish_sbt_plugin: description: 'Publish SBT Plugin' - default: 'true' + default: 'Y' required: true jobs: @@ -61,6 +61,27 @@ jobs: restore-keys: | ${{ runner.os }}-ivy- + - name: Set up GPG + run: | + echo ${{ github.workspace }} + # gpg init + mkdir ~/.gnupg && echo use-agent >> ~/.gnupg/gpg.conf + echo pinentry-mode loopback >> ~/.gnupg/gpg.conf + echo allow-loopback-pinentry >> ~/.gnupg/gpg-agent.conf + echo RELOADAGENT | gpg-connect-agent + echo ${SIGNING_KEY} | awk '{gsub(/\\n/,"\n")}1'| gpg --dearmor > ${{ github.workspace }}/secretKeyRingFile.gpg + gpg --import --pinentry-mode loopback --batch --passphrase '${SIGNING_PASSWORD}' ${{ github.workspace }}/secretKeyRingFile.gpg + ls -al ${{ github.workspace }} + ls -al ~/.gnupg/ + env: + SIGNING_KEY: ${{ secrets.OSSRH_GPG_SECRET_KEY }} + SIGNING_PASSWORD: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} + + - name: Configure Git + run: | + git config --global user.name 'Bogdan Kobylynskyi' + git config --global user.email 'kobylynskyi@users.noreply.github.com' + - name: Update version of Maven plugin sub-project working-directory: plugins/maven/graphql-java-codegen-maven-plugin run: mvn versions:set -DnewVersion="${{ github.event.inputs.release_version }}" -DgenerateBackupPoms=false @@ -79,16 +100,6 @@ jobs: - name: Update versions in all README files run: scripts/update-release-version-in-readme.sh ${{ github.event.inputs.release_version }} - # - # VERSIONS ARE IN THE RELEASE STATE, SO WE CAN COMMIT THEM - # - - - name: Commit release version so that iw will be pus - run: | - git config --global user.name 'Bogdan Kobylynskyi' - git config --global user.email 'kobylynskyi@users.noreply.github.com' - git commit -am "Bump version to ${{ github.event.inputs.release_version }}" - # # VERSIONS UPDATED # NOW WE ARE READY FOR THE FINAL BUILD @@ -97,90 +108,101 @@ jobs: - name: Build library run: ./gradlew build publishToMavenLocal publishAllPublicationsToIvyRepository --warning-mode all - - name: Build gradle plugin - run: ./gradlew -p plugins/gradle/graphql-java-codegen-gradle-plugin build publishToMavenLocal --warning-mode all - - - name: Update version of Maven plugin to SNAPSHOT (required by publish-plugin) - working-directory: plugins/maven/graphql-java-codegen-maven-plugin - run: mvn versions:set -DnewVersion="${{ github.event.inputs.release_version }}-SNAPSHOT" -DgenerateBackupPoms=false - - name: Build maven plugin + if: github.event.inputs.publish_maven_plugin == 'Y' working-directory: plugins/maven/graphql-java-codegen-maven-plugin run: mvn install - - name: Build sbt plugin - working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin - run: sbt compile publishLocal --debug + - name: Build maven example-server + if: github.event.inputs.publish_maven_plugin == 'Y' + working-directory: plugins/maven/example-server + run: mvn package - - name: Build sbt test - working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin - run: sbt scripted + - name: Build maven example-client + if: github.event.inputs.publish_maven_plugin == 'Y' + working-directory: plugins/maven/example-client + run: mvn package - - name: Build gradle example-server --warning-mode all + - name: Build gradle plugin + run: ./gradlew -p plugins/gradle/graphql-java-codegen-gradle-plugin build publishToMavenLocal --warning-mode all + + - name: Build gradle example-server + if: github.event.inputs.publish_gradle_plugin == 'Y' run: ./gradlew -p plugins/gradle/example-server test --warning-mode all - name: Build gradle example-client + if: github.event.inputs.publish_gradle_plugin == 'Y' run: ./gradlew -p plugins/gradle/example-client test --warning-mode all - name: Build gradle example-client-kotlin + if: github.event.inputs.publish_gradle_plugin == 'Y' run: ./gradlew -p plugins/gradle/example-client-kotlin build --warning-mode all - - name: Build maven example-server - working-directory: plugins/maven/example-server - run: mvn package - - - name: Build maven example-client - working-directory: plugins/maven/example-client - run: mvn package + - name: Build sbt plugin + if: github.event.inputs.publish_sbt_plugin == 'Y' + working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin + run: sbt compile publishLocal --debug - - name: Install gpg secret key - run: cat <(echo -e "${{ secrets.OSSRH_GPG_SECRET_KEY }}") | gpg --batch --import + - name: Build sbt test + if: github.event.inputs.publish_sbt_plugin == 'Y' + working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin + run: sbt scripted # # BUILD OF RELEASE VERSION COMPLETED - # NOW PERFORMING THE PUBLISH + # SO WE CAN COMMIT THEM + # + + - name: Update version of Maven plugin to SNAPSHOT (required by publish-plugin) + if: github.event.inputs.publish_maven_plugin == 'Y' + working-directory: plugins/maven/graphql-java-codegen-maven-plugin + run: mvn versions:set -DnewVersion="${{ github.event.inputs.release_version }}-SNAPSHOT" -DgenerateBackupPoms=false + + - name: Commit release version + run: git commit -am "Bump version to ${{ github.event.inputs.release_version }}" + + # + # VERSIONS ARE IN THE RELEASE STATE AND READY TO PUBLISH # - name: Release library - if: ${{ github.event.inputs.publish_library }} == "true" + if: github.event.inputs.publish_library == 'Y' run: | ./gradlew publish \ - -Dorg.gradle.internal.publish.checksums.insecure=true \ - -Pgradle.publish.key=${{ secrets.GRADLE_PUBLISH_KEY}} \ - -Pgradle.publish.secret=${{ secrets.GRADLE_PUBLISH_SECRET }} - env: - OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} - OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - SIGNING_KEY: ${{ secrets.OSSRH_GPG_SECRET_KEY }} - SIGNING_PASSWORD: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} - RELEASE_VERSION: ${{ github.event.inputs.release_version }} + -Dorg.gradle.internal.publish.checksums.insecure=true \ + -PsonatypeUsername=${{ secrets.OSSRH_USERNAME }} \ + -PsonatypePassword=${{ secrets.OSSRH_PASSWORD }} \ + -Psigning.keyId=${{ secrets.OSSRH_GPG_SECRET_KEY_ID }} \ + -Psigning.password=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \ + -Psigning.secretKeyRingFile=${{ github.workspace }}/secretKeyRingFile.gpg - name: Release Gradle plugin - if: ${{ github.event.inputs.publish_gradle_plugin }} == "true" + if: github.event.inputs.publish_gradle_plugin == 'Y' run: | - ./gradlew \ - -p plugins/gradle/graphql-java-codegen-gradle-plugin \ - publishPlugins \ + ./gradlew -p plugins/gradle/graphql-java-codegen-gradle-plugin publishPlugins \ -Dorg.gradle.internal.publish.checksums.insecure=true \ -Pgradle.publish.key=${{ secrets.GRADLE_PUBLISH_KEY}} \ -Pgradle.publish.secret=${{ secrets.GRADLE_PUBLISH_SECRET }} - env: - SIGNING_KEY: ${{ secrets.OSSRH_GPG_SECRET_KEY }} - SIGNING_PASSWORD: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} - RELEASE_VERSION: ${{ github.event.inputs.release_version }} - name: Release Maven plugin - if: ${{ github.event.inputs.publish_maven_plugin }} == "true" + if: github.event.inputs.publish_maven_plugin == 'Y' working-directory: plugins/maven/graphql-java-codegen-maven-plugin run: | mvn \ + --settings .maven.xml --no-transfer-progress \ --batch-mode \ -Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \ release:clean release:prepare release:perform + env: + GPG_EXECUTABLE: gpg + GPG_SECRET_KEYS: ${{ secrets.OSSRH_GPG_SECRET_KEY }} + GPG_PASSPHRASE: ${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} + SONATYPE_USER: ${{ secrets.OSSRH_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - name: Release SBT plugin - if: ${{ github.event.inputs.publish_sbt_plugin }} == "true" + if: github.event.inputs.publish_sbt_plugin == 'Y' working-directory: plugins/sbt/graphql-java-codegen-sbt-plugin run: sbt release with-defaults default-tag-exists-answer k diff --git a/plugins/maven/.maven.xml b/plugins/maven/.maven.xml new file mode 100644 index 00000000..60dda0a5 --- /dev/null +++ b/plugins/maven/.maven.xml @@ -0,0 +1,27 @@ + + + + + ossrh + ${env.SONATYPE_USERNAME} + ${env.SONATYPE_PASSWORD} + + + + + + + ossrh + + true + + + ${env.GPG_EXECUTABLE} + ${env.GPG_PASSPHRASE} + + + + \ No newline at end of file diff --git a/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml b/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml index 5e62cea3..7e9dacbb 100644 --- a/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml +++ b/plugins/maven/graphql-java-codegen-maven-plugin/pom.xml @@ -1,4 +1,5 @@ - + 4.0.0 io.github.kobylynskyi @@ -69,6 +70,9 @@ 3.2.0 1.11.2 1.6 + 3.3.3 + + 4.1.4-SNAPSHOT @@ -91,7 +95,7 @@ org.apache.maven.shared maven-shared-utils - 3.3.3 + ${version.maven-shared-utils} org.apache.maven.plugin-tools @@ -103,7 +107,7 @@ io.github.kobylynskyi graphql-java-codegen - ${project.version} + ${version.graphql-java-codegen} @@ -242,7 +246,9 @@ v@{project.version} - ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.patchVersion} + + ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.patchVersion} + true diff --git a/scripts/update-release-version-in-build-files.sh b/scripts/update-release-version-in-build-files.sh index 09cea700..17abe9b1 100755 --- a/scripts/update-release-version-in-build-files.sh +++ b/scripts/update-release-version-in-build-files.sh @@ -4,13 +4,17 @@ RELEASE_VERSION=$1 RELEASE_VERSION_ESCAPED=${RELEASE_VERSION//./\\.} set_version_in_file() { - sed -i '' "s/$2[A-Z0-9.\-]*/$2$RELEASE_VERSION_ESCAPED/" "$1" + # for mac add '' after -i: sed -i '' "s... + sed -i "s/$2[A-Z0-9.\-]*/$2$RELEASE_VERSION_ESCAPED/gw /tmp/sed.done" "$1" echo "Updated version in $1" + grep --color -e "" /tmp/sed.done } -set_version_in_file "build.gradle" "var graphqlCodegenVersion = '" +set_version_in_file "build.gradle" "def graphqlCodegenVersion = '" -set_version_in_file "plugins/gradle/graphql-java-codegen-gradle-plugin/build.gradle" "var graphqlCodegenGradlePluginVersion = '" +set_version_in_file "plugins/maven/graphql-java-codegen-maven-plugin/pom.xml" "" + +set_version_in_file "plugins/gradle/graphql-java-codegen-gradle-plugin/build.gradle" "def graphqlCodegenGradlePluginVersion = '" set_version_in_file "plugins/gradle/example-server/build.gradle" "io.github.kobylynskyi.graphql.codegen\" version \"" @@ -18,7 +22,7 @@ set_version_in_file "plugins/gradle/example-client/build.gradle" "implementation set_version_in_file "plugins/gradle/example-client/build.gradle" "io.github.kobylynskyi.graphql.codegen\" version \"" set_version_in_file "plugins/gradle/example-client-kotlin/build.gradle" "id \"io.github.kobylynskyi.graphql.codegen\" version \"" -set_version_in_file "plugins/gradle/example-client-kotlin/build.gradle" "var graphqlCodegenClientKotlinVersion = '" +set_version_in_file "plugins/gradle/example-client-kotlin/build.gradle" "def graphqlCodegenClientKotlinVersion = '" set_version_in_file "plugins/gradle/example-client-kotlin/build.gradle" "implementation \"io.github.kobylynskyi:graphql-java-codegen:" set_version_in_file "plugins/sbt/graphql-java-codegen-sbt-plugin/version.sbt" "version in ThisBuild := \"" diff --git a/scripts/update-release-version-in-readme.sh b/scripts/update-release-version-in-readme.sh index 6fb499aa..72cd855d 100755 --- a/scripts/update-release-version-in-readme.sh +++ b/scripts/update-release-version-in-readme.sh @@ -4,8 +4,9 @@ RELEASE_VERSION=$1 RELEASE_VERSION_ESCAPED=${RELEASE_VERSION//./\\.} set_version_in_file() { - sed -i '' "s/$2[A-Z0-9.\-]*/$2$RELEASE_VERSION_ESCAPED/" "$1" + sed -i "s/$2[A-Z0-9.\-]*/$2$RELEASE_VERSION_ESCAPED/gw /tmp/sed.done" "$1" echo "Updated version in $1" + grep --color -e "" /tmp/sed.done } set_version_in_file "plugins/gradle/README.md" "id \"io.github.kobylynskyi.graphql.codegen\" version \"" -- GitLab