Skip to content

Carpet Mod 1.4.161 for Minecraft 24w46a and 1.21.4 #141

Carpet Mod 1.4.161 for Minecraft 24w46a and 1.21.4

Carpet Mod 1.4.161 for Minecraft 24w46a and 1.21.4 #141

Workflow file for this run

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