CICD :16

DevOps Classroom Series – 20/Feb/2021

Declarative Pipeline Structure

  • In this section lets try to understand the declarative pipelines structure Preview
  • Now evaluate the image with the pipeline below
pipeline {
    agent { label 'ltecomm'}
    stages {
        stage('scm') {
            steps {
                git 'https://github.com/wakaleo/game-of-life.git'        
            }
        }
        stage('build') {
            steps {
                sh script: 'mvn clean package'
            }
        }
        stage('post build') {
            steps {
                junit 'gameoflife-web/target/surefire-reports/*.xml'
                archiveArtifacts 'gameoflife-web/target/*.war'
            }
        }
    }
}

  • Lets set one build trigger using pipeline. Refer Here for the changeset which uses triggers section Refer Here for the documentation
  • Exercise: Make changes in the pipeline to reflect pollSCM or upstream jobs
  • Now lets try to create parameters in our build job Refer Here
  • Refer Here for the changeset
  • If you need to set any Jenkins Environmental variables Refer Here
  • If you need to use different version of tools which you have configured in Manage Jenkins => Global Tools section, that can be used by using tools section Refer Here
  • Lets add a build timeout of 30 mins
  • Now we can look into the pipeline steps: Refer Here
  • Now lets copy files from one node to other using stash and unstash steps Refer Here for the changeset
  • Now lets create a game of life source code with three branches
    • developer
    • qa
    • release
  • For the repository Refer Here
  • Now lets create Jenkinsfile per branch so that
    • developer build is triggered every Hour
    • qa build is triggered once in a day at 11:59 PM on different node
    • release build is triggered manually
  • Now lets configure one build job which will create one job per git branch Preview Preview Preview Preview Preview Preview
  • Refer Here for the post step
  • If you want to send an extended email Refer Here

Problems to be resolved

  • How do we ensure the code written by developers is meeting standards/best practices => SonarQube
  • We build the project multiple times how do we store the project artifacts so that they can be retrieved in the future => Jfrog/Artifactory
  • Understanding One of the popular branching strategy => Gitflow
  • Understanding git tags and their importance
  • Git Ops => Pull request
  • Git Sub modules
  • Azure DevOps => .net build environment. (Next weekend)