Jenkins

Jenkins is a popular and powerful CI solution. With Jenkins, you can create pipelines using the DSL Groovy, which is based on Java. Jenkins is a very flexible tool and can be used to create complex pipelines.

What does Aeolus generate?

Aeolus generates a simple Jenkinsfile, that is then used in a simple pipeline. Each action from the input file is translated into a stage in the Jenkinsfile. One example of a Jenkinsfile generated by Aeolus is:

pipeline {
  agent {
    docker {
      image 'ls1tum/artemis-maven-template:java17-20'
    }
  }
  parameters {
    string(name: 'current_lifecycle', defaultValue: 'working_time', description: 'The current stage')
  }
  environment {
    REPOSITORY_URL = 'https://github.com/ls1intum/Aeolus.git'
  }

  stages {
    stage('aeolus') {
      steps {
        dir('aeolus') {
          checkout([$class: 'GitSCM',
            branches: [[name: 'develop']],
            doGenerateSubmoduleConfigurations: false,
            userRemoteConfigs: [[
              name: 'aeolus',
              url: "${REPOSITORY_URL}"
            ]]
          ])
        }
      }
    }
    stage('script-action') {
      steps {
        sh '''#!/usr/bin/env bash
          echo "I am a script action"
        '''
      }
    }
    stage('template-action_0') {
      when {
        allOf {
            expression { params.current_lifecycle != 'preparation' }
        }
      }
      environment {
        HELLO = 'world'
        WHO_TO_GREET = 'hello'
      }
      steps {
        sh '''#!/usr/bin/env bash
          echo "Hello ${WHO_TO_GREET}"

        '''
      }
    }
  }
}