Initial repo structure #1
This file contains hidden or 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: build | |
| on: | |
| push: | |
| pull_request: | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }} | |
| CURSEFORGE_PROJECT_ID: ${{ secrets.CURSEFORGE_PROJECT_ID }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 8 | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: '8' | |
| - name: Cache Gradle and Forge/MCP | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.gradle/caches | |
| ~/.gradle/wrapper | |
| key: gradle-${{ runner.os }}-fg2_3-forge-1_12_2-14_23_5_2847-${{ hashFiles('**/*.gradle*', 'gradle/wrapper/gradle-wrapper.properties') }} | |
| restore-keys: | | |
| gradle-${{ runner.os }}-fg2_3-forge-1_12_2-14_23_5_2847- | |
| - name: Make gradlew executable | |
| run: chmod +x gradlew | |
| - name: Make scripts executable | |
| run: chmod +x .github/scripts/*.sh | |
| - name: Build | |
| working-directory: . | |
| run: | | |
| ./gradlew --version | |
| ./gradlew setupCiWorkspace --info | |
| ./gradlew build --info | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: simplestructurescanner-jar | |
| path: build/libs/*.jar | |
| - name: Publish GitHub Release (tags only) | |
| if: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| TAG="${GITHUB_REF##*/}" | |
| TAG_COMMIT=$(git rev-list -n 1 "$TAG") | |
| NOTES_FILE="/tmp/release_notes.md" | |
| .github/scripts/build_release_notes.sh "$TAG" "${GITHUB_REPOSITORY%/*}" "${GITHUB_REPOSITORY#*/}" "$TAG_COMMIT" "${GITHUB_SERVER_URL:-https://github.com}" > "$NOTES_FILE" | |
| echo "Generated release notes:" >&2 | |
| sed 's/^/ /' "$NOTES_FILE" >&2 | |
| gh release create "$TAG" build/libs/*.jar \ | |
| --title "Simple Structure Scanner $TAG" \ | |
| --notes-file "$NOTES_FILE" \ | |
| $(if [[ "$TAG" =~ [ab]|rc|pre ]]; then echo "--prerelease"; fi) | |
| - name: Publish to CurseForge (tags only; infer release type) | |
| if: ${{ env.CURSEFORGE_TOKEN != '' && startsWith(github.ref, 'refs/tags/') }} | |
| working-directory: . | |
| env: | |
| CURSEFORGE_TOKEN: ${{ env.CURSEFORGE_TOKEN }} | |
| CURSEFORGE_PROJECT_ID: ${{ env.CURSEFORGE_PROJECT_ID }} | |
| GIT_TAG: ${{ github.ref_name }} | |
| CHANGELOG: ${{ github.event.head_commit.message }} | |
| run: | | |
| set -euo pipefail | |
| TAG="${GIT_TAG:-${GITHUB_REF##*/}}" | |
| LOWER=$(echo "$TAG" | tr '[:upper:]' '[:lower:]') | |
| RELEASE_TYPE=release | |
| if [[ "$LOWER" == *alpha* ]]; then | |
| RELEASE_TYPE=alpha | |
| elif [[ "$LOWER" == *beta* || "$LOWER" == *rc* || "$LOWER" == *pre* ]]; then | |
| RELEASE_TYPE=beta | |
| else | |
| CORE=$(echo "$LOWER" | sed -E 's/^v//') | |
| if [[ "$CORE" =~ ^[0-9]+(\.[0-9]+)*a([0-9]*)?$ ]]; then | |
| RELEASE_TYPE=alpha | |
| elif [[ "$CORE" =~ ^[0-9]+(\.[0-9]+)*b([0-9]*)?$ ]]; then | |
| RELEASE_TYPE=beta | |
| fi | |
| fi | |
| TAG_COMMIT=$(git rev-list -n 1 "$TAG") | |
| CL=$(.github/scripts/build_release_notes.sh "$TAG" "${GITHUB_REPOSITORY%/*}" "${GITHUB_REPOSITORY#*/}" "$TAG_COMMIT" "${GITHUB_SERVER_URL:-https://github.com}") | |
| ./gradlew curseforge --no-daemon \ | |
| -PcurseforgeProjectId="$CURSEFORGE_PROJECT_ID" \ | |
| -PcurseforgeChangelog="$CL" \ | |
| -PcurseforgeReleaseType="$RELEASE_TYPE" |