diff options
Diffstat (limited to '.github/workflows/nightly-server.yml')
| -rw-r--r-- | .github/workflows/nightly-server.yml | 78 |
1 files changed, 73 insertions, 5 deletions
diff --git a/.github/workflows/nightly-server.yml b/.github/workflows/nightly-server.yml index a55a2a62..23ea2cb7 100644 --- a/.github/workflows/nightly-server.yml +++ b/.github/workflows/nightly-server.yml @@ -13,6 +13,11 @@ on: permissions: contents: write + packages: write + +concurrency: + group: nightly-server + cancel-in-progress: true jobs: build: @@ -27,7 +32,7 @@ jobs: uses: actions/checkout@v6 - name: Set platform lowercase - run: echo "PLATFORM=$('${{ matrix.platform }}'.ToLower())" >> $env:GITHUB_ENV + run: echo "MATRIX_PLATFORM=$('${{ matrix.platform }}'.ToLower())" >> $env:GITHUB_ENV - name: Setup MSVC uses: ilammy/msvc-dev-cmd@v1 @@ -40,12 +45,12 @@ jobs: env: VCPKG_ROOT: "" # Disable vcpkg for CI builds with: - configurePreset: ${{ env.PLATFORM }} - buildPreset: ${{ env.PLATFORM }}-release + 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.PLATFORM }}/Minecraft.Server/Release/* -x!*.ipdb -x!*.iobj + run: 7z a -r LCEServer${{ matrix.platform }}.zip ./build/${{ env.MATRIX_PLATFORM }}/Minecraft.Server/Release/* -x!*.ipdb -x!*.iobj - name: Stage artifacts run: | @@ -55,7 +60,7 @@ jobs: - name: Stage exe and pdb if: matrix.platform == 'Windows64' run: | - Copy-Item ./build/${{ env.PLATFORM }}/Minecraft.Server/Release/Minecraft.Server.exe staging/ + Copy-Item ./build/${{ env.MATRIX_PLATFORM }}/Minecraft.Server/Release/Minecraft.Server.exe staging/ - name: Upload artifacts uses: actions/upload-artifact@v6 @@ -88,6 +93,69 @@ jobs: 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() |
