diff options
Diffstat (limited to '.github/workflows')
| -rw-r--r-- | .github/workflows/build.yml | 31 | ||||
| -rw-r--r-- | .github/workflows/debug-test.yml | 32 | ||||
| -rw-r--r-- | .github/workflows/docker-nightly.yml | 160 | ||||
| -rw-r--r-- | .github/workflows/nightly-server.yml | 167 | ||||
| -rw-r--r-- | .github/workflows/nightly.yml | 95 | ||||
| -rw-r--r-- | .github/workflows/pull-request.yml | 32 |
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 |
