Skip to content

Commit

Permalink
Merge pull request #650 from altrisi/release-action
Browse files Browse the repository at this point in the history
Add Publish Release Action
  • Loading branch information
gnembon authored Jan 15, 2021
2 parents 97609d9 + 8bd6bd8 commit 2c7dd1c
Show file tree
Hide file tree
Showing 4 changed files with 206 additions and 85 deletions.
21 changes: 0 additions & 21 deletions .github/workflows/merge-docs.yml

This file was deleted.

192 changes: 192 additions & 0 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
name: Publish Release

on:
release:
types: [published]
jobs:
Get-Properties:
runs-on: ubuntu-latest
outputs:
release-type: ${{ steps.type.outputs.release-type }}
carpet-version: ${{ steps.properties.outputs.mod_version }}
minecraft-version: ${{ steps.properties.outputs.minecraft_version }}
curse-versions: ${{ steps.properties.outputs.release-curse-versions }}
matrix-exclude-branch: ${{ steps.processmatrix.outputs.matrix-to-exclude }}
extra-branch-name: ${{ steps.properties.outputs.release-extra-branch-name }}
extra-branch-curse-version: ${{ steps.properties.outputs.release-extra-curse-version }}
steps:
- name: Checkout the sources
uses: actions/checkout@v2
- name: Determine release type
id: type
run: |
if ${{ github.event.release.prerelease }}; then
echo "::set-output name=release-type::beta"
else
echo "::set-output name=release-type::release"
fi
- name: Read relevant fields from gradle.properties
id: properties
run: | # From christian-draeger/read-properties, using the action makes it extremely messy until christian-draeger/read-properties#2
path='./gradle.properties'
for property in mod_version minecraft_version release-curse-versions release-extra-branch release-extra-branch-name release-extra-curse-version
do
result=$(sed -n "/^[[:space:]]*$property[[:space:]]*=[[:space:]]*/s/^[[:space:]]*$property[[:space:]]*=[[:space:]]*//p" "$path")
echo "$property: $result"
echo ::set-output name=$property::"$result"
done
- name: Process property for matrix
id: processmatrix
run: |
if ! ${{ steps.properties.outputs.release-extra-branch }}; then
echo "::set-output name=matrix-to-exclude::Snapshots"
fi
Build-And-Publish:
runs-on: ubuntu-latest
needs: [Get-Properties]
strategy:
matrix:
branch: [Release, Snapshots]
exclude:
- branch: ${{ needs.Get-Properties.outputs.matrix-exclude-branch }}
steps:
- name: Get info from branch to run
id: getbranchinfo
run: |
if ${{ matrix.branch == 'Snapshots'}}; then
echo "::set-output name=branchname::${{ needs.Get-Properties.outputs.extra-branch-name }}"
echo "::set-output name=version::${{ needs.Get-Properties.outputs.extra-branch-curse-version }}"
echo "::set-output name=curse-versions::${{ needs.Get-Properties.outputs.extra-branch-curse-version }}"
else
echo "::set-output name=version::${{ needs.Get-Properties.outputs.minecraft-version }}"
echo "::set-output name=curse-versions::${{ needs.Get-Properties.outputs.curse-versions }}"
fi
- name: Checkout the sources
uses: actions/checkout@v2
with:
ref: ${{ steps.getbranchinfo.outputs.branchname }}
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Cache Gradle packages
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Grant execute permission to gradlew
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- name: Find correct JAR
id: findjar
run: |
output="$(find build/libs/ ! -name "*-dev.jar" ! -name "*-sources.jar" -type f -printf "%f\n")"
echo "::set-output name=jarname::$output"
- name: Save build artifacts in the action
uses: actions/upload-artifact@v2
with:
name: Artifacts for ${{ matrix.branch }}
path: build/libs
- name: Upload to the Github release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: build/libs/${{ steps.findjar.outputs.jarname }}
asset_name: ${{ steps.findjar.outputs.jarname }}
asset_content_type: application/java-archive
- name: Upload to Curseforge
uses: itsmeow/curseforge-upload@v3
with:
token: ${{ secrets.CF_API_TOKEN }}
project_id: 349239
game_endpoint: minecraft
file_path: build/libs/${{ steps.findjar.outputs.jarname }}
changelog_type: markdown
changelog: ${{ github.event.release.body }}
display_name: Carpet Mod v${{ needs.Get-Properties.outputs.carpet-version }} for ${{ steps.getbranchinfo.outputs.version }}
game_versions: 7499,4458,${{ steps.getbranchinfo.outputs.curse-versions }} #Fabric,Java 8,[version (s) for the branch]
release_type: ${{ needs.Get-Properties.outputs.release-type }}
- name: Ask Gradle to publish
run: ./gradlew publish
- name: Save publish folder in action's artifacts # Remove when automated
uses: actions/upload-artifact@v2
with:
name: Maven publishing artifacts for ${{ matrix.branch }}
path: publish/carpet/fabric-carpet/
Merge-Scarpet-Docs:
runs-on: ubuntu-latest
steps:
- name: Checkout the sources
uses: actions/checkout@v2
with:
ref: master
- name: Merge docs
run: |
./mergedoc.sh
- name: Commit merged docs
continue-on-error: true
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git commit -am "Merge docs for '${{ github.event.release.name }}'" || exit 0
git push
Update-Rules-Wiki:
runs-on: ubuntu-latest
steps:
- name: Checkout Carpet sources
uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
- name: Cache Gradle packages
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Replace fabric.mod.json
run: |
cd src/main/resources
rm fabric.mod.json
echo '
{
"schemaVersion": 1,
"id": "carpet",
"version": "1.4.11",
"entrypoints": {
"preLaunch": [ "carpet.utils.RulePrinter" ]
}
}' > fabric.mod.json
cd ../../../
- name: Run solution
run: |
chmod +x gradlew
./gradlew runServer > settings-toProccess.txt
- name: Checkout wiki
uses: actions/checkout@v2
with:
repository: ${{github.repository}}.wiki
path: wiki
- name: Proccess Gradle log into a pretty wiki page
run: |
from1="# Carpet";
File=settings-toProccess.txt
if grep -q "Deprecated Gradle features" "$File"; then # Happens after update to Gradle 6
to2="Deprecated Gradle features";
else
to2="BUILD SUCCESSFUL"
fi
a="$(cat settings-toProccess.txt)"; a="$(echo "${a#*"$from1"}")"; echo "$from1${a%%"$to2"*}" > wiki/Current-Available-Settings.md
- name: Commit updated wiki page
continue-on-error: true
run: |
cd wiki
git config --global user.name 'github-actions-bot' # Releases don't have valid commiter info :(
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git commit -am "Update wiki for '${{ github.event.release.name }}'" || exit 0
git push
64 changes: 0 additions & 64 deletions .github/workflows/rules-to-wiki.yml

This file was deleted.

14 changes: 14 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,20 @@ org.gradle.jvmargs=-Xmx1G
maven_group = carpet
archives_base_name = fabric-carpet

# Release Action properties for Curseforge and Snapshots
# The Curseforge versions "names" or ids for the main branch (comma separated: 1.16.4,1.16.5)
# This is needed because CF uses too vague names for prereleases and release candidates
# Can also be the version ID directly coming from https://minecraft.curseforge.com/api/game/versions?token=[API_TOKEN]
release-curse-versions = 1.16.3,1.16.4
# Whether or not to build another branch on release
release-extra-branch = true
# The name of the second branch to release
release-extra-branch-name = 1.17
# The "name" or id of the Curseforge version for the secondary branch
# This is needed because CF uses too vague names for snapshots
# Can also be the version ID directly coming from https://minecraft.curseforge.com/api/game/versions?token=[API_TOKEN]
release-extra-curse-version = 1.17

# Dependencies
# currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api
#fabric_version=0.3.0-pre+build.166

0 comments on commit 2c7dd1c

Please sign in to comment.