From d181d452e866acba9241707373db23b7e98cafee Mon Sep 17 00:00:00 2001 From: ducoterra Date: Tue, 2 Nov 2021 10:05:01 -0400 Subject: [PATCH 1/5] Overhaul for get-server v. 2.0.0 Since get-server downloads its own jarfile this commit overhauls a lot of the minecraft deploy to match the new strategy. It also updates the README and adds makefile targets for a few new commands. --- .gitignore | 3 ++- Makefile | 28 +++++-------------- README.md | 55 ++++++++++---------------------------- helm/templates/deploy.yaml | 7 ----- helm/values.yaml | 2 +- 5 files changed, 24 insertions(+), 71 deletions(-) diff --git a/.gitignore b/.gitignore index adbb97d..fe29ac4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -data/ \ No newline at end of file +data/ +world/ diff --git a/Makefile b/Makefile index 0792771..996a6d2 100644 --- a/Makefile +++ b/Makefile @@ -1,27 +1,13 @@ SHELL := /bin/bash -IMAGE ?= $(shell cat IMAGE):$(shell cat VERSION) -IMAGE_LATEST ?= $(shell cat IMAGE):latest -PWD ?= $(shell pwd) +include .gitlab/Makefile -.PHONY: buildx-context -buildx-context: - docker buildx create --name arm64 --use --platform linux/amd64,linux/arm64 - -.PHONY: buildx-clear -buildx-clear: - docker buildx rm arm64 - -.PHONY: build -build: - docker buildx build --load . -t $(IMAGE) - @docker buildx build --load . -t $(IMAGE_LATEST) - -.PHONY: push -push: - docker buildx build --platform linux/amd64 --push . -t $(IMAGE) - @docker buildx build --platform linux/amd64 --push . -t $(IMAGE_LATEST) +.PHONY: get-server +get-server: + @mkdir -p world + @echo 'eula=true' > world/eula.txt + @docker run -it -e SERVER_VERSION=1.17.1 -v $(PWD)/world:/downloads ducoterra/get-minecraft:latest .PHONY: run run: - docker run -it -v $(PWD):/mc_data $(IMAGE) bash + docker-compose run --service-ports minecraft diff --git a/README.md b/README.md index 7249982..81bb2a4 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,34 @@ # Minecraft -## Getting server.jar - -![Click Installations](img/main.png) -![Select the Options Menu](img/menu.png) -![Click Edit](img/edit.png) -![Click Download Server](img/server.png) - ## Running Locally ```bash -docker-compose build minecraft -docker-compose up minecraft +# download the most recent version of minecraft +make get-server + +# Run the server +docker-compose up ``` ## Uploading to Docker Hub -In docker-compose.yaml, update the image tag to: +1. Update the version in the VERSION file. +2. Build and push the new version -```yaml -... -services: - minecraft: - build: . - image: /minecraft:-1 - ports: -... -``` - -then run - -```bash -docker-compose push -``` + ```bash + make build + make push + ``` ## Running in kubernetes -In k8s/deploy.yaml, edit the deploy - -```yaml -... - spec: - containers: - - name: minecraft - image: - ports: -... -``` - -Then run the following +Requires helm v3. Edit values.yaml and run the following: ```bash -kubectl apply -f k8s/pvc -kubectl apply -f k8s +helm upgrade --install minecraft ``` -Your minecraft server will be available on port 25565 +Your minecraft server will be available on port 25565 by default. ## Create a Backup diff --git a/helm/templates/deploy.yaml b/helm/templates/deploy.yaml index e6a0c7e..a5872ad 100644 --- a/helm/templates/deploy.yaml +++ b/helm/templates/deploy.yaml @@ -23,13 +23,6 @@ spec: volumeMounts: - mountPath: /downloads name: data - - name: download-server - image: {{ .Values.get_server.image }} - imagePullPolicy: Always - command: ["bash", "-c", "curl -o server.jar $(cat SERVER_VERSION)"] - volumeMounts: - - mountPath: /downloads - name: data containers: - name: {{ .Release.Name }} image: {{ .Values.image }} diff --git a/helm/values.yaml b/helm/values.yaml index 01943f6..bb1d9ab 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -1,6 +1,6 @@ image: ducoterra/minecraft:latest get_server: - image: ducoterra/get-minecraft:latest + image: ducoterra/get-minecraft:2.0.0 server_version: "1.17.1" port: 20101 max_cpu: 4 From 65b3a84e963126be6d8cdcc2df5b4f6ac48c8a3b Mon Sep 17 00:00:00 2001 From: ducoterra Date: Tue, 2 Nov 2021 10:07:50 -0400 Subject: [PATCH 2/5] make subtree "split" overhaul In order to create cleaner histories we should be using subtree split and push in order to preview the changes as an MR before pushing to main. --- .gitlab/Makefile | 36 +++++++++++++++++++++++++++++++++++ .gitlab/README.md | 9 +++++++++ .gitlab/make/docker.makefile | 29 ++++++++++++++++++++++++++++ .gitlab/make/git.makefile | 5 +++++ .gitlab/make/helm.makefile | 4 ++++ .gitlab/make/kaniko.makefile | 0 .gitlab/make/truenas.makefile | 3 +++ 7 files changed, 86 insertions(+) create mode 100644 .gitlab/Makefile create mode 100644 .gitlab/README.md create mode 100644 .gitlab/make/docker.makefile create mode 100644 .gitlab/make/git.makefile create mode 100644 .gitlab/make/helm.makefile create mode 100644 .gitlab/make/kaniko.makefile create mode 100644 .gitlab/make/truenas.makefile diff --git a/.gitlab/Makefile b/.gitlab/Makefile new file mode 100644 index 0000000..75a6988 --- /dev/null +++ b/.gitlab/Makefile @@ -0,0 +1,36 @@ +SHELL := /bin/bash + +VERSION ?= $(shell cat VERSION) +IMAGE ?= $(shell cat IMAGE):$(VERSION) +IMAGE_LATEST ?= $(shell cat IMAGE):latest +PWD ?= $(shell pwd) +STASH ?= "common-update-stash" + +include .gitlab/make/docker.makefile +include .gitlab/make/helm.makefile +include .gitlab/make/kaniko.makefile +include .gitlab/make/truenas.makefile +include .gitlab/make/git.makefile + +.PHONY: warning +warning: + @printf "Running a potentially destructive command. If a conflict occurs, fix the conflict and re-run the command.\n" + @printf "Cancel with ctrl + c within 3 seconds." + @sleep 3 + +.PHONY: make-stash-drop +make-stash-drop: + @if [ ! -z "$$(git stash list | grep -r 'stash@{0}.*common')" ]; then git stash drop; fi + +.PHONY: make-update +make-update: + -git remote add common git@gitlab.ducoterra.net:services/common.git + -git subtree pull --prefix .gitlab --message "Merge update from Common" -q git@gitlab.ducoterra.net:services/common.git main + +.PHONY: make-push +make-push: warning + @make make-update + @git remote add common git@gitlab.ducoterra.net:services/common.git + @git subtree split --branch common-minecraft --prefix .gitlab + @git subtree push --prefix .gitlab common main + @git remote remove common diff --git a/.gitlab/README.md b/.gitlab/README.md new file mode 100644 index 0000000..8aa1cbe --- /dev/null +++ b/.gitlab/README.md @@ -0,0 +1,9 @@ +# Adding the "common" subtree as your .gitlab folder + +```bash +# Add the subtree as a remote +git subtree add --prefix .gitlab git@gitlab.ducoterra.net:services/common.git main --squash + +# Now you can run the following to update +make make-update +``` diff --git a/.gitlab/make/docker.makefile b/.gitlab/make/docker.makefile new file mode 100644 index 0000000..23e4a52 --- /dev/null +++ b/.gitlab/make/docker.makefile @@ -0,0 +1,29 @@ +.PHONY: docker-init +docker-init: + @touch VERSION + @touch IMAGE + +.PHONY: buildx-context +buildx-context: + docker buildx create --name container-builder --use --platform linux/amd64,linux/arm64 + +.PHONY: buildx-clear +buildx-clear: + docker buildx rm container-builder + +.PHONY: build +build: + docker buildx build --load . -t $(IMAGE) + @docker buildx build --load . -t $(IMAGE_LATEST) + +.PHONY: push +push: + -make buildx-clear + @make buildx-context + docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE) + @docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE_LATEST) + +.PHONY: docker-release +docker-release: + @yq e ".services.minecraft.image = \"$(IMAGE)\"" -i docker-compose.yaml + @make push diff --git a/.gitlab/make/git.makefile b/.gitlab/make/git.makefile new file mode 100644 index 0000000..f80a243 --- /dev/null +++ b/.gitlab/make/git.makefile @@ -0,0 +1,5 @@ +.PHONY: git-release +git-release: + @git add . + @git commit -m "Automated release for version $(VERSION)" + @git tag $(VERSION) diff --git a/.gitlab/make/helm.makefile b/.gitlab/make/helm.makefile new file mode 100644 index 0000000..f603af4 --- /dev/null +++ b/.gitlab/make/helm.makefile @@ -0,0 +1,4 @@ +.PHONY: helm-release +helm-release: + @yq e ".version = \"$(shell cat VERSION)\"" -i helm/Chart.yaml + @yq e ".appVersion = \"$(shell cat VERSION)\"" -i helm/Chart.yaml diff --git a/.gitlab/make/kaniko.makefile b/.gitlab/make/kaniko.makefile new file mode 100644 index 0000000..e69de29 diff --git a/.gitlab/make/truenas.makefile b/.gitlab/make/truenas.makefile new file mode 100644 index 0000000..c6fb58c --- /dev/null +++ b/.gitlab/make/truenas.makefile @@ -0,0 +1,3 @@ +.PHONY: chart-release +chart-release: + @rsync -av $(CHART)/helm/ charts/$(CHART)/$(shell cat $(CHART)/VERSION)/ From a5aa0cacbe9d4b28864c16c03e93c02df41ac967 Mon Sep 17 00:00:00 2001 From: ducoterra Date: Tue, 2 Nov 2021 10:08:38 -0400 Subject: [PATCH 3/5] Automated release for version 1.0.2 --- VERSION | 2 +- docker-compose.yaml | 13 +++++++++++++ helm/Chart.yaml | 7 ++----- 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yaml diff --git a/VERSION b/VERSION index 3eefcb9..6d7de6e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.0 +1.0.2 diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..527768a --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,13 @@ +version: '3' +services: + minecraft: + image: ducoterra/minecraft:1.0.2 + stdin_open: true + tty: true + volumes: + - ./world:/mc_data + ports: + - 25565:25565 + environment: + - MAX_RAM=1 + - MIN_RAM=1 diff --git a/helm/Chart.yaml b/helm/Chart.yaml index 6e2f7cd..f83145a 100644 --- a/helm/Chart.yaml +++ b/helm/Chart.yaml @@ -1,7 +1,6 @@ apiVersion: v2 name: minecraft description: A Minecraft server for kubernetes - # A chart can be either an 'application' or a 'library' chart. # # Application charts are a collection of templates that can be packaged into versioned archives @@ -11,13 +10,11 @@ description: A Minecraft server for kubernetes # a dependency of application charts to inject those utilities and functions into the rendering # pipeline. Library charts do not define any templates and therefore cannot be deployed. type: application - # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.1.0 - +version: 1.0.2 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. -appVersion: 1.0.0 +appVersion: 1.0.2 From 422f4d49bd437ae15d2a34303be12cecf99d5860 Mon Sep 17 00:00:00 2001 From: ducoterra Date: Tue, 2 Nov 2021 11:59:08 -0400 Subject: [PATCH 4/5] remove .gitlab subtree --- .gitlab/Makefile | 36 ----------------------------------- .gitlab/README.md | 9 --------- .gitlab/make/docker.makefile | 29 ---------------------------- .gitlab/make/git.makefile | 5 ----- .gitlab/make/helm.makefile | 4 ---- .gitlab/make/kaniko.makefile | 0 .gitlab/make/truenas.makefile | 3 --- 7 files changed, 86 deletions(-) delete mode 100644 .gitlab/Makefile delete mode 100644 .gitlab/README.md delete mode 100644 .gitlab/make/docker.makefile delete mode 100644 .gitlab/make/git.makefile delete mode 100644 .gitlab/make/helm.makefile delete mode 100644 .gitlab/make/kaniko.makefile delete mode 100644 .gitlab/make/truenas.makefile diff --git a/.gitlab/Makefile b/.gitlab/Makefile deleted file mode 100644 index 75a6988..0000000 --- a/.gitlab/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -SHELL := /bin/bash - -VERSION ?= $(shell cat VERSION) -IMAGE ?= $(shell cat IMAGE):$(VERSION) -IMAGE_LATEST ?= $(shell cat IMAGE):latest -PWD ?= $(shell pwd) -STASH ?= "common-update-stash" - -include .gitlab/make/docker.makefile -include .gitlab/make/helm.makefile -include .gitlab/make/kaniko.makefile -include .gitlab/make/truenas.makefile -include .gitlab/make/git.makefile - -.PHONY: warning -warning: - @printf "Running a potentially destructive command. If a conflict occurs, fix the conflict and re-run the command.\n" - @printf "Cancel with ctrl + c within 3 seconds." - @sleep 3 - -.PHONY: make-stash-drop -make-stash-drop: - @if [ ! -z "$$(git stash list | grep -r 'stash@{0}.*common')" ]; then git stash drop; fi - -.PHONY: make-update -make-update: - -git remote add common git@gitlab.ducoterra.net:services/common.git - -git subtree pull --prefix .gitlab --message "Merge update from Common" -q git@gitlab.ducoterra.net:services/common.git main - -.PHONY: make-push -make-push: warning - @make make-update - @git remote add common git@gitlab.ducoterra.net:services/common.git - @git subtree split --branch common-minecraft --prefix .gitlab - @git subtree push --prefix .gitlab common main - @git remote remove common diff --git a/.gitlab/README.md b/.gitlab/README.md deleted file mode 100644 index 8aa1cbe..0000000 --- a/.gitlab/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Adding the "common" subtree as your .gitlab folder - -```bash -# Add the subtree as a remote -git subtree add --prefix .gitlab git@gitlab.ducoterra.net:services/common.git main --squash - -# Now you can run the following to update -make make-update -``` diff --git a/.gitlab/make/docker.makefile b/.gitlab/make/docker.makefile deleted file mode 100644 index 23e4a52..0000000 --- a/.gitlab/make/docker.makefile +++ /dev/null @@ -1,29 +0,0 @@ -.PHONY: docker-init -docker-init: - @touch VERSION - @touch IMAGE - -.PHONY: buildx-context -buildx-context: - docker buildx create --name container-builder --use --platform linux/amd64,linux/arm64 - -.PHONY: buildx-clear -buildx-clear: - docker buildx rm container-builder - -.PHONY: build -build: - docker buildx build --load . -t $(IMAGE) - @docker buildx build --load . -t $(IMAGE_LATEST) - -.PHONY: push -push: - -make buildx-clear - @make buildx-context - docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE) - @docker buildx build --platform linux/amd64,linux/arm64 --push . -t $(IMAGE_LATEST) - -.PHONY: docker-release -docker-release: - @yq e ".services.minecraft.image = \"$(IMAGE)\"" -i docker-compose.yaml - @make push diff --git a/.gitlab/make/git.makefile b/.gitlab/make/git.makefile deleted file mode 100644 index f80a243..0000000 --- a/.gitlab/make/git.makefile +++ /dev/null @@ -1,5 +0,0 @@ -.PHONY: git-release -git-release: - @git add . - @git commit -m "Automated release for version $(VERSION)" - @git tag $(VERSION) diff --git a/.gitlab/make/helm.makefile b/.gitlab/make/helm.makefile deleted file mode 100644 index f603af4..0000000 --- a/.gitlab/make/helm.makefile +++ /dev/null @@ -1,4 +0,0 @@ -.PHONY: helm-release -helm-release: - @yq e ".version = \"$(shell cat VERSION)\"" -i helm/Chart.yaml - @yq e ".appVersion = \"$(shell cat VERSION)\"" -i helm/Chart.yaml diff --git a/.gitlab/make/kaniko.makefile b/.gitlab/make/kaniko.makefile deleted file mode 100644 index e69de29..0000000 diff --git a/.gitlab/make/truenas.makefile b/.gitlab/make/truenas.makefile deleted file mode 100644 index c6fb58c..0000000 --- a/.gitlab/make/truenas.makefile +++ /dev/null @@ -1,3 +0,0 @@ -.PHONY: chart-release -chart-release: - @rsync -av $(CHART)/helm/ charts/$(CHART)/$(shell cat $(CHART)/VERSION)/ From 2de53def190d3a424323f76d4bc08e84717a3a0c Mon Sep 17 00:00:00 2001 From: ducoterra Date: Tue, 2 Nov 2021 12:46:40 -0400 Subject: [PATCH 5/5] Remove .common --- .common/Makefile | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 .common/Makefile diff --git a/.common/Makefile b/.common/Makefile deleted file mode 100644 index 0792771..0000000 --- a/.common/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -SHELL := /bin/bash - -IMAGE ?= $(shell cat IMAGE):$(shell cat VERSION) -IMAGE_LATEST ?= $(shell cat IMAGE):latest -PWD ?= $(shell pwd) - -.PHONY: buildx-context -buildx-context: - docker buildx create --name arm64 --use --platform linux/amd64,linux/arm64 - -.PHONY: buildx-clear -buildx-clear: - docker buildx rm arm64 - -.PHONY: build -build: - docker buildx build --load . -t $(IMAGE) - @docker buildx build --load . -t $(IMAGE_LATEST) - -.PHONY: push -push: - docker buildx build --platform linux/amd64 --push . -t $(IMAGE) - @docker buildx build --platform linux/amd64 --push . -t $(IMAGE_LATEST) - -.PHONY: run -run: - docker run -it -v $(PWD):/mc_data $(IMAGE) bash