From b68f6b36380160cdd7519fcaa9d79e4aef938adc Mon Sep 17 00:00:00 2001 From: wusubsin Date: Sat, 28 Oct 2023 22:02:42 +0900 Subject: [PATCH] Added GitHub Action pipeline YAML for automated deployment --- .github/Gradle-Custom-Plugin-Release.yml | 65 ------------ .../gradle-custom-plugin-release.yml | 100 ++++++++++++++++++ app/build.gradle | 34 +++--- version.json | 1 + 4 files changed, 115 insertions(+), 85 deletions(-) delete mode 100644 .github/Gradle-Custom-Plugin-Release.yml create mode 100644 .github/workflows/gradle-custom-plugin-release.yml create mode 100644 version.json diff --git a/.github/Gradle-Custom-Plugin-Release.yml b/.github/Gradle-Custom-Plugin-Release.yml deleted file mode 100644 index 85af307..0000000 --- a/.github/Gradle-Custom-Plugin-Release.yml +++ /dev/null @@ -1,65 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created -# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle - -name: Gradle Package - -on: - push: - branches: - - gtihub-action-gradle-custom-plugin-release - -jobs: - build: - - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - env: - VERSION: "" - - steps: - - name: taging - shell: bash - run: | - cp $(Pipeline.Workspace) - - # I have determined that there is no need to include metadata in the tagging information - temp_major=`node -p "const p = require('$(Pipeline.Workspace)/temp/version.json'); p.major;"` - temp_minor=`node -p "const p = require('$(Pipeline.Workspace)/temp/version.json'); p.minor;"` - temp_patch=`node -p "const p = require('$(Pipeline.Workspace)/temp/version.json'); p.patch;"` - temp_prereleaseVersion=`node -p "const p = require('$(Pipeline.Workspace)/temp/version.json'); p.prereleaseVersion;"` - - version="$temp_major$temp_minor$temp_patch$temp_prereleaseVersion" - echo "VERSION = $version" - - git tag "$version" - git push -u origin HEAD:main "$version" - - - uses: actions/checkout@v3 - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'temurin' - server-id: github # Value of the distributionManagement/repository/id field of the pom.xml - settings-path: ${{ github.workspace }} # location for the settings.xml file - - - name: Build with Gradle - uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0 - with: - arguments: build - - # The USERNAME and TOKEN need to correspond to the credentials environment variables used in - # the publishing section of your build.gradle - - name: Publish to GitHub Packages - uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0 - with: - arguments: publish - env: - USERNAME: ${{ github.actor }} - TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/gradle-custom-plugin-release.yml b/.github/workflows/gradle-custom-plugin-release.yml new file mode 100644 index 0000000..f51457e --- /dev/null +++ b/.github/workflows/gradle-custom-plugin-release.yml @@ -0,0 +1,100 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created +# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle + +name: gradle custom plugin release + +on: + push: + branches: + - gtihub-action-gradle-custom-plugin-release + +jobs: + build: + runs-on: ubuntu-latest + permissions: write-all + + steps: + - uses: actions/checkout@v3 + + + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + server-id: github # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: Grant execute permission to Gradle wrapper + run: chmod +x ./gradlew + + - name: Build with Gradle + uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 + with: + arguments: build + + - name: read version.json + id: read_version + shell: bash + run: | + echo "${{ github.workspace }}" + + cd ${{ github.workspace }} + + echo "ls $(ls ${{ github.workspace }})" + + # I have determined that there is no need to include metadata in the tagging information + temp_major=`node -p "const p = require('${{ github.workspace }}/app/version.json'); p.major;"` + temp_minor=`node -p "const p = require('${{ github.workspace }}/app/version.json'); p.minor;"` + temp_patch=`node -p "const p = require('${{ github.workspace }}/app/version.json'); p.patch;"` + temp_prereleaseVersion=`node -p "const p = require('${{ github.workspace }}/app/version.json'); p.prereleaseVersion;"` + + # The task involves adding both '.' and '-' to the string so that dots (.) and dashes (-) can be included when combining all version information. + if [ "$temp_minor" != "" ]; then + temp_minor=".${temp_minor}" + fi + + if [ "$temp_patch" != "" ]; then + temp_patch=".${temp_patch}" + fi + + if [ "$temp_prereleaseVersion" != "" ]; then + temp_prereleaseVersion="-${temp_prereleaseVersion}" + fi + + echo "temp_major : $temp_major" + echo "temp_minor : $temp_minor" + echo "temp_patch : $temp_patch" + echo "temp_prereleaseVersion : $temp_prereleaseVersion" + + version="$temp_major$temp_minor$temp_patch$temp_prereleaseVersion" + echo "VERSION=$version" >> $GITHUB_OUTPUT + + + ls "${{ github.workspace }}/app/dist" + + - name: create release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ steps.read_version.outputs.VERSION }} + release_name: ${{ steps.read_version.outputs.VERSION }} + prerelease: true + + + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps + asset_path: "${{ github.workspace }}/app/dist/gradle-semantic-versioning-manager-plugin-${{ steps.read_version.outputs.VERSION }}.jar" + asset_name: gradle-semantic-versioning-manager-plugin-${{ steps.read_version.outputs.VERSION }}.jar + asset_content_type: application/jar diff --git a/app/build.gradle b/app/build.gradle index 66bd5ad..8478dfe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,32 +6,27 @@ * User Manual available at https://docs.gradle.org/7.3/userguide/building_java_projects.html */ -// buildscript { -// repositories { -// jcenter() -// } -// dependencies { -// classpath "gradle.plugin.com.github.johnrengelman:shadow:7.1.2" -// } -// } +buildscript { + repositories { + maven { + url "https://plugins.gradle.org/m2/" + } + } + dependencies { + classpath "io.github.mainmethod0126:app:0.1.4" + } +} plugins { // Apply the application plugin to add support for building a CLI application in Java. id 'application' id 'com.gradle.plugin-publish' version '1.1.0' - id 'com.github.johnrengelman.shadow' version '7.1.2' id 'java-gradle-plugin' } - - - - -// apply plugin: 'com.github.johnrengelman.shadow' - +apply plugin: "io.github.mainmethod0126.simple-semantic-version" group = 'io.github.mainmethod0126' -version = "0.1.4" sourceCompatibility = 11 targetCompatibility = 11 @@ -67,12 +62,11 @@ repositories { } -shadowJar { - baseName = "gradle-semantic-versioning-manager-plugin" - version = version - classifier = null +jar { + archiveBaseName = "gradle-semantic-versioning-manager-plugin" } + tasks.withType(Test).configureEach { it.jvmArgs = ["--add-opens=java.base/java.lang=ALL-UNNAMED"] } diff --git a/version.json b/version.json new file mode 100644 index 0000000..a5dbf1b --- /dev/null +++ b/version.json @@ -0,0 +1 @@ +{"patch":5,"buildMetadata":"","prereleaseVersion":"","major":0,"minor":1} \ No newline at end of file