neoLegacy/.gitea/workflows/nightly.yml

127 lines
3.9 KiB
YAML

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