Skip to content

feat(client-mod): implemented client-side mesh-based primitive collis… #296

feat(client-mod): implemented client-side mesh-based primitive collis…

feat(client-mod): implemented client-side mesh-based primitive collis… #296

Workflow file for this run

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 }}