This repository is a builder for a Docker container that provides an emulated S/370 mainframe (Hercules) running VM/370 based on distributions of VM/370 Release 6, circa 1979.
The Docker images are at https://hub.docker.com/repository/docker/rosspatterson/vm370.
See this repository's release tab for the Dockerfile build source and the VM/370 DASD files.
- latest -> 1.6.7
- Version 1.6.7 adds Python and switches to the Python version of the herccontrol tool.
- Version 1.6.0 is built from the VM/370 Community Edition v1.1.2 distribution.
- Version 1.5.3 is built from the VM/370 Community Edition v1.1.0 distribution.
- Version 1.3.4 corresponds to Six Pack 1.3 Beta 3.
See changelog.txt for full version history
- VM/370 SixPack distribution - http://www.smrcc.org.uk/members/g4ugm/VM370.htm
- VM/370 Community Edition distribution - http://vm370.org/vm
- Hercules home page - http://www.hercules-390.eu/
- Hercules 4.0 Fork - https://github.com/SDL-Hercules-390/hyperion
- Discussions on VM/370 are done here - https://groups.io/g/h390-vm
- Prepare Docker:
- If you don't already have a Docker account, create one at https://www.docker.com.
- Create a "vm370" Docker repository.
- Create a Personal Access Token at https://app.docker.com/settings/personal-access-tokens with "Read & Write" permission. NOTE: Docker only shows you the token when you generate it. You can never see its value again, so copy it immediately and save it.
- Fork this repository in GitHub.
- Create the following action secrets in your fork:
DOCKER_USERNAME- your Docker userid.DOCKER_PASSWORD- your Docker personal access token.
- Go to the Actions tab on your fork and enable workflows.
- Make a change, commit it, and push it to your fork. The
dockertest.yml/DockerTestGitHub workflow job will test the container build. - Tag the revision as
vn.n.n(e.g., "v1.5.4") and push the tag to GitHub. Thedockerpush.yml/DockerPublishGitHub workflow job will push the container image to Docker.
- Clone this repository to your disk.
- Download the VM/370 distribution you want to build.
- Delete the old DASD base and shadow files from
disks/anddisks/shadows/. - Add the new DASD files to
disks/. - Review the following files and make any necessary changes:
build.sh- shell script to build the Docker container.cleandisks.conf- Hercules configuration for removing shadow files.hercules.conf- main Hercules configuration.github/workflows/*.yml- GitHub workflow files.Dockerfile- the main Docker control file.
- Commit the changes and push to GitHub.
- Wait for the
dockertest.yml/DockerTestGitHub workflow job to run and verify its success. - Tag the revision as
vn.n.n(e.g., "v1.5.4") and push the tag to GitHub. NOTE: The leading "v" is necessary - it triggers the push to Docker. - Wait for the
dockerpush.yml/DockerPublishGitHub workflow job to run. - Verify that your Docker userid has the new version of the container image.
- When you're happy with the container image, consider updating the
latesttag to point to it:- Start your Docker engine (e.g., Docker desktop).
docker pull userid/vm370:x.y.zdocker tag userid/vm370:x.y.z userid/vm370:latestdocker push userid/vm370:latest- Stop your Docker engine.
- When you're ready to make the CMS370-BREXX and CMS370-GCCLIB build systems use the container image, update the
buildertag to point to it:- Start your Docker engine (e.g., Docker desktop).
docker pull userid/vm370:x.y.zdocker tag userid/vm370:x.y.z userid/vm370:builderdocker push userid/vm370:builder- Stop your Docker engine.
- Go to your CMS370-BREXX and CMS370-GCCLIB repositories, and review the following files and make any necessary changes:
cmsbuild.sh- shell script to build the code.github/workflows/build.yml- GitHub workflow files.