name: Nightly Release on: workflow_dispatch: push: branches: - 'main' paths-ignore: - '.gitignore' - '*.md' - '.gitea/**' - '!.gitea/workflows/nightly.yml' permissions: contents: write concurrency: group: nightly cancel-in-progress: true jobs: build: runs-on: ubuntu-24.04 steps: - name: Checkout uses: https://code.forgejo.org/actions/checkout@v4 - name: Install dependencies run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 21 sudo apt-get update -qq sudo apt-get install -y --no-install-recommends \ cmake ninja-build rsync zip \ clang-21 lld-21 llvm-21 clang-tools-21 - name: Install xwin (Binary) run: | curl -L https://github.com/Jake-Shadle/xwin/releases/download/0.8.0/xwin-0.8.0-x86_64-unknown-linux-musl.tar.gz | tar xz sudo mv xwin-*/xwin /usr/bin/ xwin --version - name: Create Tool Symlinks run: | sudo ln -sf /usr/bin/clang-cl-21 /usr/bin/clang-cl sudo ln -sf /usr/bin/llvm-ml-21 /usr/bin/llvm-ml sudo ln -sf /usr/bin/lld-link-21 /usr/bin/lld-link sudo ln -sf /usr/bin/clang-21 /usr/bin/clang sudo ln -sf /usr/bin/llvm-rc-21 /usr/bin/llvm-rc sudo ln -sf /usr/bin/llvm-lib-21 /usr/bin/llvm-lib sudo ln -sf /usr/bin/llvm-mt-21 /usr/bin/llvm-mt clang-cl --version - name: Build run: | chmod +x build-linux.sh INSTALL_PREFIX=$PWD/result BUILD_CI=0 ./build-linux.sh . Release || INSTALL_PREFIX=$PWD/result ./build-linux.sh . Release || INSTALL_PREFIX=$PWD/result ./build-linux.sh . Release - name: Package artifacts run: | mkdir -p staging cd result/client zip -r ../../staging/LCEWindows64.zip . cp Minecraft.Client.exe ../../staging/ cd ../.. cd result/server zip -r ../../staging/LCEWindows64Server.zip . cp Minecraft.Server.exe ../../staging/ cd ../.. - name: Upload build artifacts uses: https://code.forgejo.org/actions/upload-artifact@v3 with: name: build-windows64 path: staging/* release: needs: build runs-on: ubuntu-24.04 steps: - name: Download build artifacts uses: https://code.forgejo.org/actions/download-artifact@v3 with: path: artifacts merge-multiple: true - name: Fix Forgejo env compatibility run: | echo "FORGEJO_PATH=$GITHUB_PATH" >> $GITHUB_ENV echo "FORGEJO_ENV=$GITHUB_ENV" >> $GITHUB_ENV - name: Publish nightly release uses: https://code.forgejo.org/actions/forgejo-release@v2.11.1 with: direction: upload url: ${{ forge.server_url }} repo: ${{ forge.repository }} token: ${{ forge.token }} tag: nightly prerelease: true override: true verbose: true release-dir: artifacts/build-windows64 release-notes: "Requires at least Windows 7 and a DirectX 11 compatible GPU.\n\n# 🚨 First time here? 🚨\nDownload `LCEWindows64.zip` and extract it." cleanup: needs: [build, release] if: always() runs-on: ubuntu-24.04 steps: - name: Delete build artifacts env: FORGE_TOKEN: ${{ forge.token }} REPO: ${{ forge.repository }} API: ${{ forge.server_url }}/api/v1 run: | AUTH="Authorization: token $FORGE_TOKEN" ARTIFACTS=$(curl -s -H "$AUTH" \ "$API/repos/$REPO/actions/artifacts?name=build-windows64") for ARTIFACT_ID in $(echo "$ARTIFACTS" | jq -r '.artifacts[].id // empty'); do curl -s -X DELETE -H "$AUTH" \ "$API/repos/$REPO/actions/artifacts/$ARTIFACT_ID" done