Collection of CI/CD templates used and extended by REDMIC platform projects
Until v1.6.0
, templates were defined at project root. Now they are grouped into subdirectories, but there is a compatibility template in place for each one.
These compatibility templates only import current version of templates, adding some warnings about using deprecated version of templates.
Legacy projects using these deprecated templates should continue working ok, but is recommended to migrate template imports to updated versions.
This compatibility layer will be removed when v2.0.0
is released. If you need to use old templates after this breaking change is done, fix your templates include to a previous version.
You can use templates available at this project into your own projects, importing them at your .gitlab-ci.yml
file.
Each template contains one or more GitLab CI Jobs, which you can use as-is or customize, overriding values or extending your own jobs from them.
Note that some templates have a base definition version, prefixed with an underscore (_
). You can import them if this definition is more convenient to your project.
GitLab CI Jobs from these templates run at a specific stage of your project GitLab CI Pipelines. Check description of each template for more info.
You must reference these stages (ordered as you need) at your project's .gitlab-ci.yml
, or jobs will not run. Jobs stage value can be overwritten too, is you wish.
Here is a list of all stages used by template jobs by default, with suggested order:
test
build
(build-parent
,build-lib
andbuild-service
for functional-unit).deploy
(when referred to package deployment)pre-package
package
post-package
deploy
(when referred to service deployment)deploy-external-service
maintenance
Templates are included into .gitlab-ci.yml
like this:
include:
- project: 'redmic-project/gitlab-ci-templates'
ref: master
file: '/scanning/dependency-scanning.yml'
stages:
- test
...
Templates are located at different directories, attending it purpose.
All templates at root level (except deprecation-warning.yml
) are deprecated, but linked to current version of templates. Check Backward compatibility for further details.
Build an application with Maven, using redmic-project/docker/maven
.
- functional-unit.yml: Build a functional-unit project. Include 3 stages:
build-parent
,build-lib
andbuild-service
. - library.yml: Build a library project. Run at
build
stage. - microservice.yml: Build a microservice project. Run at
build
stage.
Deploy ancillary services (predefined externally) to your main service.
- backup-files.yml: Deploy a files backup service. Defined at
redmic-project/maintenance/backup-files
. Run atdeploy-external-service
stage. - backup-postgresql.yml: Deploy a PostgreSQL database backup service. Defined at
redmic-project/postgres/backup-postgresql
. Run atdeploy-external-service
stage.
- npm-deployment.yml: Upload an already built NPM package to GitLab packages of your project. Run at
deploy
stage. Inherit from GitLab CI templates.
Deploy a service (based in Docker) in a remote environment, using redmic-project/docker/docker-deploy
.
-
custom-image.yml: Adapt jobs from
deployment-service/docker-deploy.yml
to use a custom Docker image, defined at your project and uploaded to GitLab Docker registry of your project. -
docker-deploy.yml: Deploy one or more services defined at your project (using compose files and related contents) to a remote environment of your choice. Run at
deploy
stage. Support multiple environments (likedev
andpro
). -
maintenance.yml: Relaunch already deployed services, in order to do maintenance tasks. You must trigger these jobs using GitLab pipeline schedules. Run at
maintenance
stage. Support multiple environments (likedev
andpro
).
- docker-deploy.yml: Same as
deployment-service/docker-deploy.yml
, but preconfigured to deploy services defined into a functional-unit, using always custom images (likedeployment-service/custom-image.yml
does). Run atdeploy
stage.
Only for projects with Docker image definitions. Include Docker image building, tagging and pushing, and also Dockerfile linting and Docker image scanning.
- docker-build.yml: Build a Docker image defined at your project, using
pedroetb-projects/docker-build
. Imports jobs frompackaging-docker/dockerfile-linting.yml
andscanning/container-scanning.yml
too. Include 3 stages:pre-package
,package
andpost-package
. - dockerfile-linting.yml: Run syntax checks over Dockerfile at your project. Run at
pre-package
stage. Already included atpackaging-docker/docker-build.yml
.
- container-scanning.yml: Run vulnerability checks over your Docker image. Run at
post-package
stage. Already included atpackaging-docker/docker-build.yml
. Inherit from GitLab CI templates. - dependency-scanning.yml: Lookup dependencies at your code, finding vulnerabilities and licenses compliance status. Run at
test
stage. Inherit from GitLab CI templates.