Merge branch 'update-minecraft'

This commit is contained in:
ducoterra
2021-11-02 16:00:07 -04:00
17 changed files with 135 additions and 84 deletions

View File

@@ -1,5 +1,9 @@
include .gitlab/Makefile
.PHONY: chart-setup
chart-setup:
git remote add minecraft git@gitlab.ducoterra.net:services/minecraft_vanilla.git
.PHONY: pull-minecraft
pull-minecraft:
git subtree pull --squash --prefix minecraft git@gitlab.ducoterra.net:services/minecraft_vanilla.git master

View File

@@ -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

View File

@@ -1 +1,2 @@
data/
data/
world/

View File

@@ -0,0 +1,34 @@
SHELL := /bin/bash
PROJECT_NAME ?= $(shell git config --local remote.origin.url|sed -n 's#.*/\([^.]*\)\.git#\1#p')
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 subtree pull --prefix .gitlab --message "Merge update from Common" -q common main
.PHONY: make-push
make-push: warning
@make make-update
@git subtree split --branch common/$(PROJECT_NAME) --prefix .gitlab
@git push common common/$(PROJECT_NAME):common/$(PROJECT_NAME)

View File

@@ -0,0 +1,10 @@
# Adding the "common" subtree as your .gitlab folder
```bash
# Add the subtree as a remote
git remote add common git@gitlab.ducoterra.net:services/common.git
git subtree add --prefix .gitlab common main
# Now you can run the following to update
make make-update
```

View File

@@ -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

View File

@@ -0,0 +1,5 @@
.PHONY: git-release
git-release:
@git add .
@git commit -m "Automated release for version $(VERSION)"
@git tag $(VERSION)

View File

@@ -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

View File

View File

@@ -0,0 +1,3 @@
.PHONY: chart-release
chart-release:
@rsync -av $(CHART)/helm/ charts/$(CHART)/$(shell cat $(CHART)/VERSION)/

View File

@@ -1 +1,13 @@
include .common/Makefile
SHELL := /bin/bash
include .gitlab/Makefile
.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-compose run --service-ports minecraft

View File

@@ -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: <your_username>/minecraft:<version>-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: <your image from above>
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

View File

@@ -1 +1 @@
1.0.0
1.0.2

View File

@@ -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

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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