Project goals - accetto/ubuntu-vnc-xfce-g3 GitHub Wiki

Project goal and requirements

Version: G3v2

Updated: 2022-11-04


Project goals

The main project goal is to develop a free, simple and self-containing CI/CD pipeline for building sets of configurable Docker images with minimal dependencies outside the project itself.

Project requirements

Efficient re-building and re-publishing

  • Images should be re-built and re-published only if something essential has changed.

  • It should be possible to enforce or disable the re-building and re-publishing.

  • New releases of the essential parts of the images should be auto-detected.

Up-to-date metadata

  • Embedded image metadata (labels) should be up-to-date.

  • Up-to-date metadata should be also available outside the images.

Fewer Dockerfiles and dependencies

  • Sets of images should be built from fewer, but more flexible Dockerfiles.

  • Dockerfiles and the images should be less dependent on each other.

Separated and more flexible readme files

  • Readme files for the GitHub and the Docker Hub repositories should be separated.

  • Readme files for the GitHub repository can be long and they should not require any processing before publishing.

  • Readme files for the Docker Hub repository should be below the limit of 25000 characters and they can require some processing before publishing.

  • Readme file templates should be supported.

  • Readme file composition should be supported.

Separated building od images and publishing of readme files

  • Publishing of readme files should be separated from the building of images.

  • It should be possible to update the readme files with the up-to-date metadata before publishing them to the Docker Hub.

  • It should be possible to re-publish the readme files without re-building the images.

Building pipeline requirements

Common building pipeline

  • The same building code should be used for building the images on all stages, including the local one.

  • By building locally, it should be possible to execute the complete building pipeline or only a part of it.

  • It should be possible to test and to debug the complete building pipeline locally.

Supporting automated building

  • Building pipeline should support the stages that support CI/CD (e.g. the GitLab).

  • Automated building should minimize dependencies on external resources.

  • Automated building should not depend on paid resources.

Supporting private resources

  • Using private GitHub and Docker Hub repositories should be supported.

Building on Linux and Windows

  • Development, debugging and building on Linux and Windows should be supported.

  • Only Linux containers should be supported.