aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml31
-rw-r--r--.github/workflows/debug-test.yml32
-rw-r--r--.github/workflows/docker-nightly.yml160
-rw-r--r--.github/workflows/nightly-server.yml167
-rw-r--r--.github/workflows/nightly.yml95
-rw-r--r--.github/workflows/pull-request.yml32
6 files changed, 264 insertions, 253 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
deleted file mode 100644
index a499ff84..00000000
--- a/.github/workflows/build.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: Build Minecraft Legacy Console Edition
-on:
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: windows-2022
-
- strategy:
- matrix:
- configuration: [Release, Debug]
-
- steps:
- - name: Checkout Repository
- uses: actions/checkout@v4
-
- - name: Setup MSBuild
- uses: microsoft/setup-msbuild@v2
-
- - name: Build Minecraft Legacy Console Edition
- run: |
- msbuild MinecraftConsoles.sln `
- /p:Configuration=${{ matrix.configuration }} `
- /p:Platform=Windows64 `
- /m
-
- - name: Upload Release + Debug Artifacts
- uses: actions/upload-artifact@v4
- with:
- name: MinecraftClient-${{ matrix.configuration }}
- path: x64/${{ matrix.configuration }}
diff --git a/.github/workflows/debug-test.yml b/.github/workflows/debug-test.yml
deleted file mode 100644
index 4acd5fc5..00000000
--- a/.github/workflows/debug-test.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: MSBuild Debug Test
-
-on:
- workflow_dispatch:
- pull_request:
- types: [opened, reopened, synchronize]
- paths-ignore:
- - '.gitignore'
- - '*.md'
- - '.github/*.md'
- push:
- branches:
- - 'main'
- paths-ignore:
- - '.gitignore'
- - '*.md'
- - '.github/*.md'
-
-jobs:
- build:
- name: Build Windows64 (DEBUG)
- runs-on: windows-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v6
-
- - name: Setup msbuild
- uses: microsoft/setup-msbuild@v2
-
- - name: Build
- run: MSBuild.exe MinecraftConsoles.sln /p:Configuration=Debug /p:Platform="Windows64"
diff --git a/.github/workflows/docker-nightly.yml b/.github/workflows/docker-nightly.yml
deleted file mode 100644
index 78d5256c..00000000
--- a/.github/workflows/docker-nightly.yml
+++ /dev/null
@@ -1,160 +0,0 @@
-name: Docker Nightly Dedicated Server
-
-on:
- workflow_dispatch:
- push:
- branches:
- - "main"
- - 'feature/dedicated-server'
- paths-ignore:
- - ".gitignore"
- - "*.md"
- - ".github/*.md"
-
-permissions:
- contents: read
- packages: write
-
-concurrency:
- group: docker-nightly-dedicated-server
- cancel-in-progress: true
-
-jobs:
- build-runtime:
- name: Build Dedicated Server Runtime
- runs-on: windows-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v6
-
- - name: Setup msbuild
- uses: microsoft/setup-msbuild@v2
-
- - name: Build Dedicated Server Runtime Only
- shell: pwsh
- run: |
- MSBuild.exe Minecraft.World\Minecraft.World.vcxproj /p:Configuration=Release /p:Platform=x64 /m
- MSBuild.exe Minecraft.Server\Minecraft.Server.vcxproj /p:Configuration=Release /p:Platform=x64 /m
-
- - name: Stage dedicated server runtime
- shell: pwsh
- run: |
- $serverOut = "Minecraft.Server/x64/Minecraft.Server/Release"
- $stage = ".artifacts/dedicated-server-runtime"
-
- if (Test-Path $stage) {
- Remove-Item -Path $stage -Recurse -Force
- }
-
- New-Item -ItemType Directory -Path (Join-Path $stage "Windows64") -Force | Out-Null
-
- # Minimum required runtime files
- $required = @(
- "Minecraft.Server.exe",
- "iggy_w64.dll",
- "Common"
- )
-
- foreach ($entry in $required) {
- $src = Join-Path $serverOut $entry
- if (-not (Test-Path $src)) {
- throw "Missing required runtime path: $src"
- }
- }
-
- # Copy required files
- Copy-Item -Path (Join-Path $serverOut "Minecraft.Server.exe") -Destination (Join-Path $stage "Minecraft.Server.exe") -Force
- Copy-Item -Path (Join-Path $serverOut "iggy_w64.dll") -Destination (Join-Path $stage "iggy_w64.dll") -Force
- Copy-Item -Path (Join-Path $serverOut "Common") -Destination (Join-Path $stage "Common") -Recurse -Force
- if (Test-Path (Join-Path $serverOut "Windows64")) {
- Copy-Item -Path (Join-Path $serverOut "Windows64/*") -Destination (Join-Path $stage "Windows64") -Recurse -Force
- } else {
- Write-Host "Windows64 directory is not present in build output; staging without it."
- }
-
- Get-ChildItem -Path $stage -Recurse -File | Select-Object -First 20 | ForEach-Object {
- Write-Host "Staged: $($_.FullName)"
- }
-
- - name: Upload dedicated server runtime to artifacts
- uses: actions/upload-artifact@v4
- with:
- name: dedicated-server-runtime
- if-no-files-found: error
- path: |
- .artifacts/dedicated-server-runtime/**
-
- docker-publish:
- name: Build and Push Docker Image
- runs-on: ubuntu-latest
- needs: build-runtime
-
- steps:
- - name: Checkout
- uses: actions/checkout@v6
-
- - name: Download dedicated server runtime from artifacts
- uses: actions/download-artifact@v4
- with:
- name: dedicated-server-runtime
- path: .artifacts/runtime
-
- - name: Prepare Docker runtime directory
- shell: bash
- run: |
- set -euo pipefail
-
- rm -rf runtime
- mkdir -p runtime
- cp .artifacts/runtime/Minecraft.Server.exe runtime/Minecraft.Server.exe
- cp .artifacts/runtime/iggy_w64.dll runtime/iggy_w64.dll
- cp -R .artifacts/runtime/Common runtime/Common
- mkdir -p runtime/Windows64
- if [[ -d ".artifacts/runtime/Windows64" ]]; then
- cp -R .artifacts/runtime/Windows64/. runtime/Windows64/
- fi
-
- test -f runtime/Minecraft.Server.exe
- test -f runtime/iggy_w64.dll
- test -d runtime/Common
- test -d runtime/Windows64
-
- - name: Compute image name
- id: image
- shell: bash
- run: |
- owner="$(echo "${{ vars.CONTAINER_REGISTRY_OWNER || github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
- image_tag="nightly"
- # if [[ "${{ github.ref }}" != "refs/heads/main" ]]; then
- # image_tag="nightly-test"
- # fi
- echo "owner=$owner" >> "$GITHUB_OUTPUT"
- echo "image=ghcr.io/$owner/minecraft-lce-dedicated-server" >> "$GITHUB_OUTPUT"
- echo "image_tag=$image_tag" >> "$GITHUB_OUTPUT"
-
- - name: Extract Docker metadata
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: ${{ steps.image.outputs.image }}
- tags: |
- type=raw,value=${{ steps.image.outputs.image_tag }}
-
- - name: Login to GHCR
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ secrets.GHCR_USERNAME || github.actor }}
- password: ${{ secrets.GHCR_TOKEN || secrets.GITHUB_TOKEN }}
-
- - name: Build and push image
- uses: docker/build-push-action@v6
- with:
- context: .
- file: docker/dedicated-server/Dockerfile
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- labels: ${{ steps.meta.outputs.labels }}
- build-args: |
- MC_RUNTIME_DIR=runtime \ No newline at end of file
diff --git a/.github/workflows/nightly-server.yml b/.github/workflows/nightly-server.yml
new file mode 100644
index 00000000..23ea2cb7
--- /dev/null
+++ b/.github/workflows/nightly-server.yml
@@ -0,0 +1,167 @@
+name: Nightly Server Release
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - 'main'
+ paths-ignore:
+ - '.gitignore'
+ - '*.md'
+ - '.github/**'
+ - '!.github/workflows/nightly-server.yml'
+
+permissions:
+ contents: write
+ packages: write
+
+concurrency:
+ group: nightly-server
+ cancel-in-progress: true
+
+jobs:
+ build:
+ runs-on: windows-latest
+
+ strategy:
+ matrix:
+ platform: [Windows64]
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Set platform lowercase
+ run: echo "MATRIX_PLATFORM=$('${{ matrix.platform }}'.ToLower())" >> $env:GITHUB_ENV
+
+ - name: Setup MSVC
+ uses: ilammy/msvc-dev-cmd@v1
+
+ - name: Setup CMake
+ uses: lukka/get-cmake@latest
+
+ - name: Run CMake
+ uses: lukka/run-cmake@v10
+ env:
+ VCPKG_ROOT: "" # Disable vcpkg for CI builds
+ with:
+ configurePreset: ${{ env.MATRIX_PLATFORM }}
+ buildPreset: ${{ env.MATRIX_PLATFORM }}-release
+ buildPresetAdditionalArgs: "['--target', 'Minecraft.Server']"
+
+ - name: Zip Build
+ run: 7z a -r LCEServer${{ matrix.platform }}.zip ./build/${{ env.MATRIX_PLATFORM }}/Minecraft.Server/Release/* -x!*.ipdb -x!*.iobj
+
+ - name: Stage artifacts
+ run: |
+ New-Item -ItemType Directory -Force -Path staging
+ Copy-Item LCEServer${{ matrix.platform }}.zip staging/
+
+ - name: Stage exe and pdb
+ if: matrix.platform == 'Windows64'
+ run: |
+ Copy-Item ./build/${{ env.MATRIX_PLATFORM }}/Minecraft.Server/Release/Minecraft.Server.exe staging/
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: build-${{ matrix.platform }}
+ path: staging/*
+
+ release:
+ needs: build
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Download all artifacts
+ uses: actions/download-artifact@v7
+ with:
+ path: artifacts
+ merge-multiple: true
+
+ - name: Update release
+ uses: andelf/nightly-release@main
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ tag_name: nightly-dedicated-server
+ name: Nightly Dedicated Server Release
+ body: |
+ Dedicated Server runtime for Windows64.
+
+ Download `LCEServerWindows64.zip` and extract it to a folder where you'd like to keep the server runtime.
+ files: |
+ artifacts/*
+
+ docker-publish:
+ name: Build and Push Docker Image
+ runs-on: ubuntu-latest
+ needs: build
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Download dedicated server runtime from artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: build-Windows64
+ path: .artifacts/
+
+ - name: Prepare Docker runtime directory
+ shell: bash
+ run: |
+ set -euo pipefail
+
+ rm -rf runtime
+ mkdir -p runtime
+ unzip .artifacts/LCEServerWindows64.zip -d runtime
+
+ - name: Compute image name
+ id: image
+ shell: bash
+ run: |
+ owner="$(echo "${{ vars.CONTAINER_REGISTRY_OWNER || github.repository_owner }}" | tr '[:upper:]' '[:lower:]')"
+ image_tag="nightly"
+ # if [[ "${{ github.ref }}" != "refs/heads/main" ]]; then
+ # image_tag="nightly-test"
+ # fi
+ echo "owner=$owner" >> "$GITHUB_OUTPUT"
+ echo "image=ghcr.io/$owner/minecraft-lce-dedicated-server" >> "$GITHUB_OUTPUT"
+ echo "image_tag=$image_tag" >> "$GITHUB_OUTPUT"
+
+ - name: Extract Docker metadata
+ id: meta
+ uses: docker/metadata-action@v5
+ with:
+ images: ${{ steps.image.outputs.image }}
+ tags: |
+ type=raw,value=${{ steps.image.outputs.image_tag }}
+
+ - name: Login to GHCR
+ uses: docker/login-action@v3
+ with:
+ registry: ghcr.io
+ username: ${{ secrets.GHCR_USERNAME || github.actor }}
+ password: ${{ secrets.GHCR_TOKEN || secrets.GITHUB_TOKEN }}
+
+ - name: Build and push image
+ uses: docker/build-push-action@v6
+ with:
+ context: .
+ file: docker/dedicated-server/Dockerfile
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
+ build-args: |
+ MC_RUNTIME_DIR=runtime
+
+ cleanup:
+ needs: [build, release]
+ if: always()
+ runs-on: ubuntu-latest
+ steps:
+ - name: Cleanup artifacts
+ uses: geekyeggo/delete-artifact@v5
+ with:
+ name: build-*
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 5af23fe6..19f6e138 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -1,41 +1,84 @@
-name: Nightly Releases
+name: Nightly Release
on:
workflow_dispatch:
push:
branches:
- 'main'
- - 'feature/dedicated-server'
paths-ignore:
- '.gitignore'
- '*.md'
- - '.github/*.md'
+ - '.github/**'
+ - '!.github/workflows/nightly.yml'
permissions:
contents: write
+concurrency:
+ group: nightly
+ cancel-in-progress: true
+
jobs:
build:
- name: Build Windows64
runs-on: windows-latest
+ strategy:
+ matrix:
+ platform: [Windows64]
+
steps:
- name: Checkout
uses: actions/checkout@v6
- - name: Setup msbuild
- uses: microsoft/setup-msbuild@v2
+ - name: Set platform lowercase
+ run: echo "MATRIX_PLATFORM=$('${{ matrix.platform }}'.ToLower())" >> $env:GITHUB_ENV
+
+ - name: Setup MSVC
+ uses: ilammy/msvc-dev-cmd@v1
- - name: Build
- run: MSBuild.exe MinecraftConsoles.sln /p:Configuration=Release /p:Platform="Windows64"
+ - name: Setup CMake
+ uses: lukka/get-cmake@latest
+
+ - name: Run CMake
+ uses: lukka/run-cmake@v10
+ env:
+ VCPKG_ROOT: "" # Disable vcpkg for CI builds
+ with:
+ configurePreset: ${{ env.MATRIX_PLATFORM }}
+ buildPreset: ${{ env.MATRIX_PLATFORM }}-release
+ buildPresetAdditionalArgs: "['--target', 'Minecraft.Client']"
- name: Zip Build
- run: 7z a -r LCEWindows64.zip ./x64/Release/*
+ run: 7z a -r LCE${{ matrix.platform }}.zip ./build/${{ env.MATRIX_PLATFORM }}/Minecraft.Client/Release/* -x!*.ipdb -x!*.iobj
- - name: Zip Dedicated Server Build
- run: 7z a -r LCEServerWindows64.zip ./x64/Minecraft.Server/Release/*
+ - name: Stage artifacts
+ run: |
+ New-Item -ItemType Directory -Force -Path staging
+ Copy-Item LCE${{ matrix.platform }}.zip staging/
- - name: Update Client release
+ - name: Stage exe and pdb
+ if: matrix.platform == 'Windows64'
+ run: |
+ Copy-Item ./build/${{ env.MATRIX_PLATFORM }}/Minecraft.Client/Release/Minecraft.Client.exe staging/
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: build-${{ matrix.platform }}
+ path: staging/*
+
+ release:
+ needs: build
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Download all artifacts
+ uses: actions/download-artifact@v7
+ with:
+ path: artifacts
+ merge-multiple: true
+
+ - name: Update release
uses: andelf/nightly-release@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -43,27 +86,19 @@ jobs:
tag_name: nightly
name: Nightly Client Release
body: |
- Requires at least Windows 7 and DirectX 11 compatible GPU to run. Compiled with MSVC v14.44.35207 in Release mode with Whole Program Optimization, as well as `/O2 /Ot /Oi /Ob3 /GF /fp:precise`.
+ Requires at least Windows 7 and DirectX 11 compatible GPU to run.
# 🚨 First time here? 🚨
If you've never downloaded the game before, you need to download `LCEWindows64.zip` and extract it to the folder where you'd like to keep the game. The other files are included in this `.zip` file!
files: |
- LCEWindows64.zip
- ./x64/Release/Minecraft.Client.exe
- ./x64/Release/Minecraft.Client.pdb
+ artifacts/*
- - name: Update Dedicated Server release
- uses: andelf/nightly-release@main
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ cleanup:
+ needs: [build, release]
+ if: always()
+ runs-on: ubuntu-latest
+ steps:
+ - name: Cleanup artifacts
+ uses: geekyeggo/delete-artifact@v5
with:
- tag_name: nightly-dedicated-server
- name: Nightly Dedicated Server Release
- body: |
- Dedicated Server runtime for Windows64.
-
- Download `LCEServerWindows64.zip` and extract it to a folder where you'd like to keep the server runtime.
- files: |
- LCEServerWindows64.zip
- ./x64/Minecraft.Server/Release/Minecraft.Server.exe
- ./x64/Minecraft.Server/Release/Minecraft.Server.pdb
+ name: build-*
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
new file mode 100644
index 00000000..9d57f4b4
--- /dev/null
+++ b/.github/workflows/pull-request.yml
@@ -0,0 +1,32 @@
+name: Pull Request Build
+
+on:
+ workflow_dispatch:
+ pull_request:
+ types: [opened, reopened, synchronize]
+ paths-ignore:
+ - '.gitignore'
+ - '*.md'
+ - '.github/*.md'
+
+jobs:
+ build:
+ runs-on: windows-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v6
+
+ - name: Setup MSVC
+ uses: ilammy/msvc-dev-cmd@v1
+
+ - name: Setup CMake
+ uses: lukka/get-cmake@latest
+
+ - name: Run CMake
+ uses: lukka/run-cmake@v10
+ env:
+ VCPKG_ROOT: "" # Disable vcpkg for CI builds
+ with:
+ configurePreset: windows64
+ buildPreset: windows64-debug