This repository contains all certified technologies used in Saagie. It also contains some experimental technologies before being certified.
For information about using these technologies with your Saagie platform, refer to Saagie's official documentation.
This repository contains all job and application technologies.
A job technologie can be launch as a job in Saagie. It has :
- a name
- an icon
- some features to create a job
- one or more versions (each can be active/deprecated/inactive for the same technologie)
See "How to create a new job technologie" for more details
An application technologie can be launch as an application in Saagie. It has :
- a name
- an icon
- a description
- some default properties to create the application (ports, volumes, ...)
See "How to create a new application technologie" for more details
All contributions are made with the pull-request system.
You create an issue and a pull-request associated.
The build is running using a Github Action workflow (build only modified). It builds only technologies modified and generate a pre release containing assets. The name of the pre release = current version + name of the branch.
When you create a new technologie or a new version for a job, you need to specify some needed files (see current for inspiration).
two main root folders : "certified" and "experimental", then you need to specified if the technology is for a job or an application.
So you'll have : certified/job
for a certified job technology.
Inside, each technology is under a folder (here : "java"), then each sub directories represents a version of this technology (here : 7,8 and 11 which was for all versions of java.)
filename | scope | description |
---|---|---|
techno.yml | technology directory | this file describes the technology (the name, the icon, the availability, the reference to the docker repository) |
version.yml | version directory | this file describes all informations about the version (features used, name of the version, the availability) |
build.gradle.kts | version directory | build in this repository is made with gradle plugins. So you just need to apply theses plugins (just need a Dockerfile and a image_test.yml). You can also declare dependencies between build if you need to build this version from another in this repository (gradle will do the build using this dependency) |
settings.gradle.kts | version directory | to set a name of the build version (need to be uniq in this repository) |
Dockerfile | version directory | The Dockerfile of the version |
image_test.yml | version directory | Each build need to be tested ... So we use GoogleContainerTools/container-structure-test to test the generated image. |
metadata.yml | version directory | This is a generated file, no need to have it, it will be created during the first build. It just a concatenation of the techno.yml and version.yml file with a correct docker image version. |
Work in progress
All was made with Github actions for this repository, but the main work was done by gradle (to be run in every CI).
Just run ./gradlew localBuildModifiedJobs --parallel -Dversion.buildmeta=local
and it will build all modified images without push it with the "_local" suffix.
The workflow started at each push on the branch ... and it will generated docker images for modified technologies and generate a pre release in Github containing all assets.
When the pull-request is merged in master, another Github action (running a gradle task) starts. It will retag docker images with branch name into a "production" name and generate a real release (and delete the pre release)