feat(client-mod): implemented client-side mesh-based primitive collis… #296
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: Moud CI | |
| on: | |
| push: | |
| branches: | |
| - develop | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: | |
| - develop | |
| - main | |
| jobs: | |
| test: | |
| name: Test & Verify | |
| runs-on: ubuntu-latest | |
| env: | |
| CI: true | |
| GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g" | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'gradle' | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| check-latest: true | |
| - name: Set up pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| run_install: false | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.pnpm-store | |
| key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm- | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Ensure versions are in sync | |
| run: node scripts/sync-version.mjs --check | |
| - name: Run Gradle checks | |
| run: ./gradlew check -x checkstyleMain -x checkstyleTest --no-configuration-cache | |
| - name: Build TypeScript packages (SDK & CLI) | |
| run: | | |
| pnpm --filter ./packages/sdk build | |
| pnpm --filter ./packages/moud-cli build | |
| build_and_release: | |
| name: Build & Release | |
| runs-on: ubuntu-latest | |
| needs: test | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| contents: write | |
| env: | |
| CI: true | |
| GRADLE_OPTS: -Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx2g" | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up JDK 21 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: '21' | |
| distribution: 'temurin' | |
| cache: 'gradle' | |
| - name: Grant execute permission for gradlew | |
| run: chmod +x gradlew | |
| - name: Set up Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| check-latest: true | |
| - name: Set up pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9 | |
| run_install: false | |
| - name: Setup pnpm cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.pnpm-store | |
| key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm- | |
| - name: Install all dependencies (pnpm monorepo) | |
| run: pnpm install --frozen-lockfile | |
| - name: Ensure versions are in sync | |
| run: node scripts/sync-version.mjs --check | |
| - name: Validate tag matches VERSION | |
| run: | | |
| VERSION=$(cat VERSION) | |
| TAG=${GITHUB_REF#refs/tags/} | |
| if [ "v${VERSION}" != "$TAG" ]; then | |
| echo "Tag $TAG does not match VERSION $VERSION" | |
| exit 1 | |
| fi | |
| - name: Configure npm authentication | |
| run: npm config set //registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN | |
| - name: Build Client Mod | |
| run: ./gradlew client-mod:build | |
| - name: Build Plugin API | |
| run: ./gradlew :plugin-api:jar | |
| - name: Build Server | |
| run: ./gradlew server:shadowJar | |
| - name: Generate API metadata | |
| run: ./gradlew server:generateTsMetadata | |
| - name: Build Plugin API Javadoc | |
| run: ./gradlew :plugin-api:javadoc | |
| - name: Build Plugin API Javadoc Jar | |
| run: ./gradlew :plugin-api:javadocJar | |
| - name: Package Plugin API Javadoc | |
| run: | | |
| tar -czf plugin-api-javadoc.tar.gz -C plugin-api/build/docs javadoc | |
| - name: Build CLI | |
| run: pnpm --filter ./packages/moud-cli build | |
| - name: Build SDK | |
| run: pnpm --filter ./packages/sdk build | |
| - name: Publish CLI to npm | |
| run: pnpm --filter ./packages/moud-cli publish --no-git-checks --access public | |
| - name: Publish SDK to npm | |
| run: pnpm --filter ./packages/sdk publish --no-git-checks --access public | |
| - name: Generate Changelog | |
| id: changelog | |
| run: | | |
| PREVIOUS_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") | |
| if [ -z "$PREVIOUS_TAG" ]; then | |
| CHANGELOG=$(git log --pretty=format:"- %s (%h)" HEAD~10..HEAD) | |
| else | |
| CHANGELOG=$(git log --pretty=format:"- %s (%h)" ${PREVIOUS_TAG}..HEAD) | |
| fi | |
| echo "changelog<<EOF" >> $GITHUB_OUTPUT | |
| echo "$CHANGELOG" >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| - name: Create Release | |
| if: ${{ env.ACT != 'true' }} | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| artifacts: | | |
| server/build/libs/moud-server.jar | |
| client-mod/build/libs/*.jar | |
| plugin-api/build/libs/plugin-api-*.jar | |
| plugin-api-javadoc.tar.gz | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| tag: ${{ github.ref_name }} | |
| draft: false | |
| generateReleaseNotes: false | |
| body: | | |
| ## Changes | |
| ${{ steps.changelog.outputs.changelog }} |