From 0fdac337824d4bc8e8851cb765baa36fa544a009 Mon Sep 17 00:00:00 2001 From: Telan <13066272+TheElan@users.noreply.github.com> Date: Sun, 21 Nov 2021 19:51:19 +0200 Subject: [PATCH 1/6] ci: configure automatic release only on tags --- .github/workflows/pull-request.yml | 4 +++- .github/workflows/release.yml | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index f4e30c1..141530d 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -1,11 +1,13 @@ # This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle -name: Build pull request +name: Build and test on: pull_request: branches: [ master, main ] + push: + branches: [ master, main ] jobs: build: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6a64794..1a126c5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,8 @@ name: Build and release main branch on: push: - branches: [ master, main ] + tags: + - '*' jobs: build: @@ -34,8 +35,8 @@ jobs: - uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest" + automatic_release_tag: "${GITHUB_REF##*/}" prerelease: true - title: "Latest Development Build" + title: "${GITHUB_REF##*/}" files: build/libs/*.jar From a02e17bc9eba15063b557dcc8af0fd5cae00550a Mon Sep 17 00:00:00 2001 From: Telan <13066272+TheElan@users.noreply.github.com> Date: Sun, 21 Nov 2021 20:29:15 +0200 Subject: [PATCH 2/6] ci: refine release structure to work both for example mod and any derivative --- ...ckage-release.yml => release-packages.yml} | 52 ++++++++------- .github/workflows/release.yml | 65 +++++++++++-------- README.md | 2 +- docs/migration.md | 2 +- 4 files changed, 68 insertions(+), 53 deletions(-) rename .github/workflows/{package-release.yml => release-packages.yml} (54%) diff --git a/.github/workflows/package-release.yml b/.github/workflows/release-packages.yml similarity index 54% rename from .github/workflows/package-release.yml rename to .github/workflows/release-packages.yml index 363028e..191e972 100644 --- a/.github/workflows/package-release.yml +++ b/.github/workflows/release-packages.yml @@ -1,29 +1,35 @@ -# This workflow only meant for the source mod you shouldn't bring it into your own project +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle -name: Release packages +name: Release starter and migration packages on: push: - branches: [ master, main ] + tags: + - '*' jobs: - zip-packages: + build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 + - name: Prepare release folder + run: | + mkdir packages + - name: Zip starter uses: montudor/action-zip@v1 with: args: > - zip -r starter.zip . \ + zip -r packages/starter.zip . \ \ -x "*.git/*" \ \ -x ".github/scripts/update-version.sh" \ -x ".github/workflows/buildscript-maintenance.yml" \ - -x ".github/workflows/package-release.yml" \ + -x ".github/workflows/release-packages.yml" \ \ -x "*docs/*" \ -x "README.md" \ @@ -32,26 +38,17 @@ jobs: -x "starter.zip" \ -x "migration.zip" - - name: Publish starter package - uses: "marvinpinto/action-automatic-releases@latest" - with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest-stater" - prerelease: true - title: "Latest starter package" - files: "starter.zip" - - name: Zip migration uses: montudor/action-zip@v1 with: args: > - zip -r migration.zip . \ + zip -r packages/migration.zip . \ \ -x "*.git/*" \ \ -x ".github/scripts/update-version.sh" \ -x ".github/workflows/buildscript-maintenance.yml" \ - -x ".github/workflows/package-release.yml" \ + -x ".github/workflows/release-packages.yml" \ \ -x "*docs/*" \ -x "*src/*" \ @@ -60,12 +57,21 @@ jobs: \ -x "starter.zip" \ -x "migration.zip" - - - name: Publish migration package + + - name: Release under current tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}-packages" + automatic_release_tag: "${GITHUB_REF##*/}" + prerelease: false + title: "${GITHUB_REF##*/}: starter and migration packages" + files: packages/* + + - name: Update latest tag uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "latest-migration" - prerelease: true - title: "Latest migration package" - files: "migration.zip" + automatic_release_tag: "latest-packages" + prerelease: false + title: "Latest starter and migration packages" + files: packages/* diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1a126c5..1765779 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,7 @@ # This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle -name: Build and release main branch +name: Release artifacts on: push: @@ -12,31 +12,40 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Set up JDK 8 - uses: actions/setup-java@v2 - with: - java-version: '8' - distribution: 'adopt' - cache: gradle - - - name: Grant execute permission for gradlew - run: chmod +x gradlew + - uses: actions/checkout@v2 + with: + fetch-depth: 0 - - name: Setup the workspace - run: ./gradlew setupCIWorkspace - - - name: Build the mod - run: ./gradlew build - - - uses: "marvinpinto/action-automatic-releases@latest" - with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "${GITHUB_REF##*/}" - prerelease: true - title: "${GITHUB_REF##*/}" - files: build/libs/*.jar - + - name: Set up JDK 8 + uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: 'adopt' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Setup the workspace + run: ./gradlew setupCIWorkspace + + - name: Build the mod + run: ./gradlew build + + - name: Release under current tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "${GITHUB_REF##*/}" + prerelease: false + title: "${GITHUB_REF##*/}" + files: build/libs/*.jar + + - name: Update latest tag + uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: false + title: "Latest" + files: build/libs/*.jar diff --git a/README.md b/README.md index 4483caa..4a7dbc2 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ We all have been there! Check out our [FAQ](https://github.com/SinTh0r4s/Example ### Getting started Creating mod from scratch: -1. Unzip [project starter](https://github.com/SinTh0r4s/ExampleMod1.7.10/releases/download/latest-starer/starter.zip) into project directory. +1. Unzip [project starter](https://github.com/SinTh0r4s/ExampleMod1.7.10/releases/download/latest-packages/starter.zip) into project directory. 2. Replace placeholders in LICENSE-template and rename it to LICENSE, or remove LICENSE-template and put any other license you like on your code. This is an permissive OSS project and we encourage you participate in OSS movement by having permissive license like one in template. You can find out pros and cons of OSS software in [this article](https://www.freecodecamp.org/news/what-is-great-about-developing-open-source-and-what-is-not/) 3. Ensure your project is under VCS. For example initialise git repository by running `git init; git commit --message "initialized repository"`. 4. Replace placeholders (edit values in gradle.properties, change example package and class names, etc.) diff --git a/docs/migration.md b/docs/migration.md index b01d544..e8597da 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -5,7 +5,7 @@ Migration for the typical mod which doesn't use anything special but Minecraft f For core plugin, Mixins, shadowing, access transformers, ASM or etc. you'll need to do some extra steps. If they are missing in this document - we will gladly receive your suggestions/contribution. -1. Copy and replace all files from [template](https://github.com/SinTh0r4s/ExampleMod1.7.10/releases/download/latest-migration/migration.zip) to your repository, but `build.gradle` +1. Copy and replace all files from [template](https://github.com/SinTh0r4s/ExampleMod1.7.10/releases/download/latest-packages/migration.zip) to your repository, but `build.gradle` 2. Copy all repositories from your `build.gradle(.kts)` to `repositories.gradle` 3. Copy all dependencies from your `build.gradle(.kts)` to `dependecies.gradle` 4. replace your `build.gradle(.kts)` with `build.gradle` from template. In case you have written some custom tasks/configurations not present in the template - move them into `addon.gradle`. It will automatically be integrated if present. From 25c09c555c8d1ac8b7eab99de9bddef90557be29 Mon Sep 17 00:00:00 2001 From: Telan <13066272+TheElan@users.noreply.github.com> Date: Sun, 21 Nov 2021 20:32:24 +0200 Subject: [PATCH 3/6] ci: rename job --- .github/workflows/release-packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-packages.yml b/.github/workflows/release-packages.yml index 191e972..ad057d6 100644 --- a/.github/workflows/release-packages.yml +++ b/.github/workflows/release-packages.yml @@ -9,7 +9,7 @@ on: - '*' jobs: - build: + zip-and-release-packages: runs-on: ubuntu-latest steps: - name: Checkout From 139c3d82296b21e95eb2f8d29c86b0d6733218c5 Mon Sep 17 00:00:00 2001 From: Telan <13066272+TheElan@users.noreply.github.com> Date: Sun, 21 Nov 2021 20:38:03 +0200 Subject: [PATCH 4/6] ci: fix tag name not being resolved --- .github/workflows/release-packages.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-packages.yml b/.github/workflows/release-packages.yml index ad057d6..d3201a5 100644 --- a/.github/workflows/release-packages.yml +++ b/.github/workflows/release-packages.yml @@ -15,6 +15,9 @@ jobs: - name: Checkout uses: actions/checkout@v2 + - name: Set release version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - name: Prepare release folder run: | mkdir packages @@ -62,9 +65,9 @@ jobs: uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}-packages" - automatic_release_tag: "${GITHUB_REF##*/}" + automatic_release_tag: "${{ env.RELEASE_VERSION }}" prerelease: false - title: "${GITHUB_REF##*/}: starter and migration packages" + title: "${{ env.RELEASE_VERSION }}: starter and migration packages" files: packages/* - name: Update latest tag From 3676bedbb9e2144b87c19bbe7d51ebd70ca85e6e Mon Sep 17 00:00:00 2001 From: Telan <13066272+TheElan@users.noreply.github.com> Date: Sun, 21 Nov 2021 20:42:00 +0200 Subject: [PATCH 5/6] ci: fix repo_token and tag expansion --- .github/workflows/release-packages.yml | 6 +++--- .github/workflows/release.yml | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release-packages.yml b/.github/workflows/release-packages.yml index d3201a5..d117fc5 100644 --- a/.github/workflows/release-packages.yml +++ b/.github/workflows/release-packages.yml @@ -64,10 +64,10 @@ jobs: - name: Release under current tag uses: "marvinpinto/action-automatic-releases@latest" with: - repo_token: "${{ secrets.GITHUB_TOKEN }}-packages" - automatic_release_tag: "${{ env.RELEASE_VERSION }}" + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "${{ env.RELEASE_VERSION }}-packages" prerelease: false - title: "${{ env.RELEASE_VERSION }}: starter and migration packages" + title: "${{ env.RELEASE_VERSION }} starter and migration packages" files: packages/* - name: Update latest tag diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1765779..05af834 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,6 +16,9 @@ jobs: with: fetch-depth: 0 + - name: Set release version + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + - name: Set up JDK 8 uses: actions/setup-java@v2 with: @@ -36,9 +39,9 @@ jobs: uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "${GITHUB_REF##*/}" + automatic_release_tag: "${{ env.RELEASE_VERSION }}" prerelease: false - title: "${GITHUB_REF##*/}" + title: "${{ env.RELEASE_VERSION }}" files: build/libs/*.jar - name: Update latest tag From 35f7410a8e58e8a7f0eabfc4ac147540600d074b Mon Sep 17 00:00:00 2001 From: Telan <13066272+TheElan@users.noreply.github.com> Date: Sun, 21 Nov 2021 20:50:58 +0200 Subject: [PATCH 6/6] readme: describe how tag releases work --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 4a7dbc2..721e441 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ We also have described guidelines for existing mod [migration](docs/migration.md - Git Tags integration for versioning - GitHub CI - [Jitpack](https://jitpack.io) CI + - Releasing your artifacts on new tags pushed. Push git tag named after version (e.g. 1.0.0) which will trigger a release of artifacts with according names. ### Files - [`build.gradle`](https://github.com/SinTh0r4s/ExampleMod1.7.10/blob/main/build.gradle): This is the core script of the build process. You should not need to tamper with it, unless you are trying to accomplish something out of the ordinary. __Do not touch this file! You will make a future update near impossible if you do so!__