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.0
- 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/DockerTest
GitHub 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/DockerPublish
GitHub 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/DockerTest
GitHub 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/DockerPublish
GitHub 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
latest
tag to point to it:- Start your Docker engine (e.g., Docker desktop).
docker pull userid/vm370:x.y.z
docker tag userid/vm370:x.y.z userid/vm370:latest
docker 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
builder
tag to point to it:- Start your Docker engine (e.g., Docker desktop).
docker pull userid/vm370:x.y.z
docker tag userid/vm370:x.y.z userid/vm370:builder
docker 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.