CPSC 489/589-010 DevOps Spring 2024
Project 5: CI/CD Posted: Apr 18
The following counts as two projects and is due Friday, May 3 Thursday, May 9.
Implement the following in the Makefile repository in the branch compose:
- A CMake that will package the executable using
cpack
.
- A docker subdirectory with Dockerfiles that works for 3 different versions of Ubuntu and 3 different versions of Fedora, where each sets up an environment to build the executable.
- The builds, packaging, and tests must work for the architectures linux/amd64 and linux/arm64.
- A Docker Compose file, compose.yml, in the root directory that will build and run the docker images (for the Dockerfiles in the docker directory. The images built via the Docker Compose file must be multi-architecture, but the execution is one architecture at a time.
- A Docker Volume that is shared among the build, package, and test steps
- A set of environment files with the names .env-build, .env-package, and .env-test. The default should be a build.
- A multi-job GitHub Action that will build, package, and test the executable and provide downloadable packages (both RPM and Deb).
This action will incorporate a secret. The generated packages must go through linters (i.e., lintian
or rpmlint
). The result should be saved. As many corrections as possible should be made to what the lint program finds.
- A CircleCI configuration that will build, package, and test.
Students in the 589 section must additionally do the following:
- Builds for 3 different versions of OpenSUSE.
DEBs and RPMs must be signed
- Improved linter results.
For students in the 489 section, any part of the 589 requirements will count as extra credit.
Items crossed out are not required. If you do complete them, they will count as extra credit.
Some restrictions:
- Image names must be part of your Docker Hub account and must be publicly available.
The images at Docker Hub must be linked to your GitHub repository so that when new Dockerfiles are pushed, the images at Docker Hub are rebuilt.
- All parts must be in separate commits with good, clear commit messages. Commit messages must be in the proper form.
- All good practices must be followed.