This is a fork of the Spring Pet Clinic which uses Red Hat's GitHub Actions to build an application image and deploy it to OpenShift as an example CI/CD workflow.
A Dockerfile and Helm Chart have been added to make this a cloud-ready version of the petclinic.
This workflow uses the following Red Hat Actions:
It demos an end-to-end workflow which:
- Compiles a Java Spring web application
- Builds a container image
- This action builds the image from scratch, but the buildah-action also supports Dockerfile builds.
- An action for performing source-to-image builds is also available.
- Pushes that image to a registry
- Logs in to an OpenShift cluster
- Creates a Deployment, Service and Route to start a container and expose it to the internet
- Checks that the app is running successfully
- Tears down the test resources
This workflow runs on GitHub's Ubuntu runners, which come with oc 4.6.0 pre-installed.
If you're not using the Ubuntu runners, use oc-installer to install oc.
To run the workflow on your fork, you have to replace a few environment variables and secrets with your own values.
-
Fork this repository.
-
Enable actions on your fork by navigating to the Actions tab and allowing actions to run.
-
Replace the environment variable values in the workflow yaml with your own.
- The environment variables you must edit are at the top of the workflow file.
- Edit the
REGISTRY_USERandTEST_REGISTRYto point to your container registry.- For example, if you want to push to Dockerhub as
john:- Set
IMAGE_REGISTRYtodocker.io. - Set
REGISTRY_USERtojohn. - The password is stored in a secret called
REGISTRY_PASSWORD- see below.
- Set
- For example, if you want to push to Dockerhub as
- Edit the
TEST_NAMESPACEto the namespace you want the workflow to issueoccommands against. The namespace must exist before the workflow runs.- You can also remove the
TEST_NAMESPACEand the workflow will use the default for your user.
- You can also remove the
-
Add the necessary secrets in your forked repository's Settings.
- Create a secret called
REGISTRY_PASSWORDwhich contains the password, encrypted password, or token for theREGISTRY_USERyou set up above. - See the oc-login Getting Started to determine the values for
OPENSHIFT_SERVERandOPENSHIFT_TOKEN, and to read about the advantages and disadvantages of each authentication method.- The easiest way to retrieve these, if you're already logged in locally:
oc whoami --show-serverfor theOPENSHIFT_SERVER.oc whoami --show-tokenfor theOPENSHIFT_TOKEN.
- The easiest way to retrieve these, if you're already logged in locally:
- Create a secret called
-
Commit your changes and push to your fork.
-
The workflow will run to compile, build and deploy the petclinic.
-
To clean up the resources, log in locally, run
helm ls, and delete the release that the workflow created.To have the workflow clean up after itself, set
TEAR_DOWN: truein theenvsection at the top of the workflow.
Separate from the demo above, the project can also be built from its Dockerfile with:
mvn package && docker build . -t petclinic:latest
docker run -p 8080:8080 petclinic:latest
After the server starts, the app will be available at localhost:8080.