Carpet Mod 1.4.158 for Minecraft 1.21.2/3 #138
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@v3 | |
- name: Determine release type | |
id: type | |
run: | | |
if ${{ github.event.release.prerelease }}; then | |
echo "release-type=beta" >> $GITHUB_OUTPUT | |
else | |
echo "release-type=release" >> $GITHUB_OUTPUT | |
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 "$property=$result" >> $GITHUB_OUTPUT | |
done | |
- name: Process property for matrix | |
id: processmatrix | |
run: | | |
if ! ${{ steps.properties.outputs.release-extra-branch }}; then | |
echo "matrix-to-exclude=Snapshots" >> $GITHUB_OUTPUT | |
fi | |
- uses: actions/github-script@v6 | |
env: | |
READ_VERSION: ${{ steps.properties.outputs.mod_version }} | |
with: | |
script: | | |
const { READ_VERSION } = process.env; | |
console.log('Read version is: ' + READ_VERSION); | |
let releases = (await github.rest.repos.listReleases({ | |
owner: context.repo.owner, | |
repo: context.repo.repo | |
})).data; | |
console.log('Previous release was: ' + releases[1].name); | |
for (let release of releases.slice(1)) { | |
if (release.name.includes(READ_VERSION)) | |
core.setFailed('Version number is the same as a previous release!') | |
} | |
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 "branchname=${{ needs.Get-Properties.outputs.extra-branch-name }}" >> $GITHUB_OUTPUT | |
echo "version=${{ needs.Get-Properties.outputs.extra-branch-curse-version }}" >> $GITHUB_OUTPUT | |
echo "curse-versions=${{ needs.Get-Properties.outputs.extra-branch-curse-version }}" >> $GITHUB_OUTPUT | |
else | |
echo "version=${{ needs.Get-Properties.outputs.minecraft-version }}" >> $GITHUB_OUTPUT | |
echo "curse-versions=${{ needs.Get-Properties.outputs.curse-versions }}" >> $GITHUB_OUTPUT | |
fi | |
- name: Checkout the sources | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ steps.getbranchinfo.outputs.branchname }} | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: 21 | |
cache: '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 "jarname=$output" >> $GITHUB_OUTPUT | |
- name: Save build artifacts in the action | |
uses: actions/upload-artifact@v3 | |
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 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@v3 | |
with: | |
name: Maven publishing artifacts for ${{ matrix.branch }} | |
path: publish/carpet/fabric-carpet/ | |
Publish-To-Discord: | |
runs-on: ubuntu-latest | |
needs: [Build-And-Publish] | |
steps: | |
- name: Publish to discord | |
uses: Crec0/announce-n-crosspost@v1 | |
with: | |
bot-token: ${{ secrets.DISCORD_BOT_TOKEN }} | |
channel: '897934715200339999' | |
content: | | |
**${{ github.event.release.name }}** has been released! | |
${{ github.event.release.body }} | |
| |
Get it on Github Releases: <${{ github.event.release.html_url }}> | |
Or on CurseForge | |
Merge-Scarpet-Docs: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the sources | |
uses: actions/checkout@v3 | |
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@v3 | |
- name: Set up JDK 21 | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'temurin' | |
java-version: 21 | |
cache: 'gradle' | |
- name: Checkout wiki | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{github.repository}}.wiki | |
path: wiki | |
- name: Run rule printer into the wiki page | |
run: | | |
chmod +x gradlew | |
./gradlew runServer --args="-- -carpetDumpRules -dumpPath ../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 |