|
| 1 | +name: Release |
| 2 | + |
| 3 | +on: |
| 4 | + push: |
| 5 | + tags: |
| 6 | + - 'v*' |
| 7 | + |
| 8 | +env: |
| 9 | + MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} |
| 10 | + |
| 11 | +jobs: |
| 12 | + release: |
| 13 | + runs-on: ubuntu-latest |
| 14 | + permissions: |
| 15 | + contents: write |
| 16 | + steps: |
| 17 | + - uses: actions/checkout@v4 |
| 18 | + |
| 19 | + - name: Set up JDK 25 |
| 20 | + uses: actions/setup-java@v4 |
| 21 | + with: |
| 22 | + java-version: '25' |
| 23 | + distribution: 'temurin' |
| 24 | + |
| 25 | + - name: Setup Gradle |
| 26 | + uses: gradle/actions/setup-gradle@v4 |
| 27 | + |
| 28 | + - name: Grant execute permission for gradlew |
| 29 | + run: chmod +x gradlew |
| 30 | + |
| 31 | + - name: Build all versions |
| 32 | + run: ./gradlew build |
| 33 | + |
| 34 | + - name: Get version from tag |
| 35 | + id: version |
| 36 | + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT |
| 37 | + |
| 38 | + - name: Collect JARs |
| 39 | + id: collect |
| 40 | + run: | |
| 41 | + mkdir -p release-jars |
| 42 | + for dir in versions/*/build/libs; do |
| 43 | + ver=$(echo "$dir" | cut -d/ -f2) |
| 44 | + for jar in "$dir"/*.jar; do |
| 45 | + [ -f "$jar" ] || continue |
| 46 | + # Skip sources jars |
| 47 | + case "$jar" in *-sources.jar) continue;; esac |
| 48 | + cp "$jar" "release-jars/greedy-meshing-${{ steps.version.outputs.VERSION }}+${ver}.jar" |
| 49 | + done |
| 50 | + done |
| 51 | + ls -la release-jars/ |
| 52 | +
|
| 53 | + - name: Create GitHub Release |
| 54 | + uses: softprops/action-gh-release@v2 |
| 55 | + with: |
| 56 | + files: release-jars/*.jar |
| 57 | + generate_release_notes: true |
| 58 | + |
| 59 | + - name: Publish to Modrinth |
| 60 | + if: env.MODRINTH_TOKEN != '' |
| 61 | + run: | |
| 62 | + VERSION="${{ steps.version.outputs.VERSION }}" |
| 63 | +
|
| 64 | + declare -A MC_VERSIONS=( |
| 65 | + ["1.21"]="1.21" |
| 66 | + ["1.21.1"]="1.21.1" |
| 67 | + ["1.21.2"]="1.21.2" |
| 68 | + ["1.21.3"]="1.21.3" |
| 69 | + ["1.21.4"]="1.21.4" |
| 70 | + ["1.21.5"]="1.21.5" |
| 71 | + ["1.21.6"]="1.21.6" |
| 72 | + ["1.21.7"]="1.21.7" |
| 73 | + ["1.21.8"]="1.21.8" |
| 74 | + ["1.21.9"]="1.21.9" |
| 75 | + ["1.21.10"]="1.21.10" |
| 76 | + ["1.21.11"]="1.21.11" |
| 77 | + ["26.1"]="26.1" |
| 78 | + ["26.1.1"]="26.1.1" |
| 79 | + ["26.1.2"]="26.1.2" |
| 80 | + ) |
| 81 | +
|
| 82 | + for ver in "${!MC_VERSIONS[@]}"; do |
| 83 | + mc_ver="${MC_VERSIONS[$ver]}" |
| 84 | + jar_file="release-jars/greedy-meshing-${VERSION}+${ver}.jar" |
| 85 | +
|
| 86 | + if [ ! -f "$jar_file" ]; then |
| 87 | + echo "Skipping $ver - no jar found" |
| 88 | + continue |
| 89 | + fi |
| 90 | +
|
| 91 | + echo "Publishing $ver ($mc_ver)..." |
| 92 | +
|
| 93 | + # Upload file first |
| 94 | + file_hash=$(sha512sum "$jar_file" | cut -d' ' -f1) |
| 95 | +
|
| 96 | + curl -s -X POST "https://api.modrinth.com/v2/version" \ |
| 97 | + -H "Authorization: $MODRINTH_TOKEN" \ |
| 98 | + -F "data={ |
| 99 | + \"name\": \"Greedy Meshing ${VERSION} for ${mc_ver}\", |
| 100 | + \"version_number\": \"${VERSION}+${mc_ver}\", |
| 101 | + \"game_versions\": [\"${mc_ver}\"], |
| 102 | + \"version_type\": \"release\", |
| 103 | + \"loaders\": [\"fabric\"], |
| 104 | + \"featured\": true, |
| 105 | + \"project_id\": \"greedy-meshing-mod\", |
| 106 | + \"file_parts\": [\"file\"], |
| 107 | + \"dependencies\": [ |
| 108 | + {\"project_id\": \"P7dR8mSH\", \"dependency_type\": \"required\"}, |
| 109 | + {\"project_id\": \"9s6osm5g\", \"dependency_type\": \"optional\"}, |
| 110 | + {\"project_id\": \"mOgUt4GM\", \"dependency_type\": \"optional\"} |
| 111 | + ] |
| 112 | + }" \ |
| 113 | + -F "file=@${jar_file}" \ |
| 114 | + && echo " -> OK" || echo " -> FAILED" |
| 115 | + done |
0 commit comments