184 lines
7.2 KiB
YAML
184 lines
7.2 KiB
YAML
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 }}
|
|
# extra-branch: ${{ steps.properties.outputs.release-extra-branch }} Not needed anymore
|
|
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-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 }}"
|
|
else
|
|
echo "::set-output name=version::${{ needs.Get-Properties.outputs.minecraft-version }}"
|
|
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.version }} #Fabric,Java 8,[version for the branch]
|
|
release_type: ${{ needs.Get-Properties.outputs.release-type }}
|
|
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
|