Skip to content

HugoPoupon/technologies

 
 

Repository files navigation

Saagie Technologies

GitHub release GitHub release date

Build Promote Build modify

Issues

License

Contributors

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.

CONTENTS

This repository contains all job and application technologies.

Job 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

Application technologies

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

CONTRIBUTING

All contributions are made with the pull-request system.

How to create a new job technologie

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).

Tree directories are strict :
tree_directory

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.

How to create a new application technologie

Work in progress

Build

All was made with Github actions for this repository, but the main work was done by gradle (to be run in every CI).

Local

Just run ./gradlew localBuildModifiedJobs --parallel -Dversion.buildmeta=local
and it will build all modified images without push it with the "_local" suffix.

Github Action

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.

Promotion

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)

About

Technologies listing used by Saagie

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 61.9%
  • Dockerfile 12.1%
  • Jupyter Notebook 10.1%
  • Kotlin 8.5%
  • Shell 6.2%
  • HTML 0.5%
  • Other 0.7%