Development
Adding a server type¶
Adding a new server TYPE can vary due to the complexity of obtaining and configuring each type; however, the addition of any server type includes at least the following steps:
- Copy an existing "start-deploy*" script, such as start-deployFabric and rename it accordingly making sure to retain the "start-deploy" prefix
- Modify the type-specific behavior between the "start-utils" preamble and the hand-off to
start-setupWorldat the end of the script - Develop and test the changes using the iterative process described below
- Add a case-entry to the
case "${TYPE^^}"in start-configuration - Add a section to the docs. It is recommended to copy-modify an existing section to retain a similar wording and level of detail
- Submit a pull request
Iterative script development¶
The included compose-dev.yml will mount the local scripts code into the container and allow for iterative development. Replace [-e key=value] with any environment variables you wish to set for testing the modified scripts.
Tip
To speed up the development cycle, it is recommended to set SETUP_ONLY to true as part of the run command above.
Building the image with a new release of a tool¶
In this exapmle, let's say that mc-image-helper has been released at 1.56.0, but the corresponding changes in the image scripts need to be tested against that version while updating the Dockerfile.
services:
mc:
build:
# ...or wherever you cloned the docker-minecraft-server repo
context: ../../..
args:
MC_HELPER_VERSION: 1.56.0
environment:
EULA: true
TYPE: "FABRIC"
MODRINTH_PROJECTS: |
fabric-api
pl3xmap?:beta
ports:
- "25565:25565/tcp"
volumes:
- ./data:/data
Using development copy of tools¶
In the cloned repo, such as mc-image-helper, install the distribution locally by running:
The distribution will be installed in the project's build/install/mc-image-helper. Obtain the absolute path to that directory use in the next step.
Refer to the instructions above to mount any locally modified image scripts or build a local copy of the image using or with alternate BASE_IMAGE, as described above:
Mount the local mc-image-helper distribution directory as a volume in the container at the path /usr/share/mc-image-helper, such as
docker run -it --rm \
-v /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper \
-e EULA=true \
itzg/minecraft-server
In a compose file, include the volume mount in the volumes section of the container definition:
services:
mc:
# ... usual container definition
volumes:
- /path/to/mc-image-helper/build/install/mc-image-helper:/usr/share/mc-image-helper:ro
For Go base tools, run
Clone itzg/github-releases-proxy and run it according to the instructions shown there.
In the Docker build, configure the following
and declare one or more version overrides, such as
Generating release notes¶
The following git command can be used to provide the bulk of release notes content:
shell script
git log --invert-grep --grep "^ci:" --grep "^misc:" --grep "^docs:" --pretty="* %s" 1.1.0..1.2.0