Files
zonemaster.es/zonemaster/docs/internal/maintenance/ReleaseProcess-create-test-distribution.md
Malin 8d4eaa1489 feat: add full Zonemaster stack with Docker and Spanish UI
- Clone all 5 Zonemaster component repos (LDNS, Engine, CLI, Backend, GUI)
- Dockerfile.backend: 8-stage multi-stage build LDNS→Engine→CLI→Backend
- Dockerfile.gui: Astro static build served via nginx
- docker-compose.yml: backend (internal) + frontend (port 5353)
- nginx.conf: root redirects to /es/, /api/ proxied to backend
- zonemaster-gui/config.ts: defaultLanguage set to 'es' (Spanish)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 08:19:24 +02:00

5.2 KiB
Raw Blame History

Release process - Create Test Distribution

Table of contents

1. Overview

The purpose of this part is to create the test distributions that can be used in QA testing for a release. It can also be used to create test distributions to verify a pull request.

Note: Normally, the develop branch version of this document should be used.

2. Prepare a build environment

Set up build system to be used for the test distribution creation. See Build Environment Preparation for how to set it up.

3. Create a clean environment

Make sure that you have checked out the correct git branch, normally the develop branch and that your clone is up-to-date.

git fetch --all
git branch

For Zonemaster-LDNS only - empty the submodule area (LDNS):

git submodule deinit -f ldns

Make sure your working directory is clean.

git status --ignored

To clean (throw away untracked changes or files):

git clean -dfx
git reset --hard

You should usually work in the develop branch, and that should be up-to-date with the remote develop branch. Your working branch:

git branch -av | grep "^*"

All branches called "develop":

git branch -av --list "*develop"

4. Generate Makefile, META.yml and others

This section is not relevant for Zonemaster-GUI.

  • For Zonemaster-LDNS:
perl Makefile.PL --no-ed25519
  • For all components except Zonemaster-LDNS:
perl Makefile.PL

Note: You can ignore the following warnings:

  • Missing META.yml (created by the very same command).
  • Zonemaster-LDNS: Missing ldns source files (fetched by the very same command).
  • Zonemaster-Engine and Zonemaster-CLI: Missing .mo files (created in a later step).
  • Missing prerequisite (only needed on target system), e.g.:
    • "Warning: prerequisite JSON::XS 0 not found."

5. Verify that MANIFEST is up to date and that tarball can be built

This section is not relevant for Zonemaster-GUI.

Build generated files (if any) and verify that a distribution tarball can be successfully built for each component that is to be updated in this release.

make all

For all components, make sure that all files are covered by MANIFEST and/or MANIFEST.SKIP, i.e. no missing or extra files:

make distcheck

6. Produce distribution tarballs

This section is not relevant for Zonemaster-GUI.

make dist

7. Produce distribution zip file

This section is relevant for Zonemaster-GUI only.

For this you need a build environment for Node.js, on which you create the zip file.

Clone the Zonemaster-GUI git repository:

  1. git clone -b develop https://github.com/zonemaster/zonemaster-gui.git
  2. cd zonemaster-gui

If you already have the repository:

  1. cd zonemaster-gui
  2. git fetch --all
  3. git checkout origin/develop

Build the distribution zip file:

  1. npm install
  2. npm run build
  3. npm run release

If you get building errors, repeat the nvm commands in build environment for Node.js first.

Usually you can ignore warnings and security fixes, and usually you do not run any npm audit fix. Check for open issues in Zonemaster-GUI and ask the others in the work group.

The distribution zip file is in the root level of the zonemaster-gui folder. Its name is zonemaster_web_gui_v0.0.0.zip with correct version.

8. Produce Docker image

Follow the instructions in Create Docker Image to build CLI Docker image for testing.

9. Verify that Zonemaster works when installed

Verify that Zonemaster works when installed according to the documented installation procedures

Using the preliminary distribution tarballs produced in step 6 above, the preliminary distribution zip file produced in step 7 above and the Docker image produced in step 8, follow the procedures in SystemTesting.

10. Restart testing

If the system testing fails in a way that requires updated distribution tarballs, zip file or Docker image:

  1. Get the changes merged.
  2. Consider whether the actions taken in steps 28 above need amendment.
  3. Resume this document from step 9 above.