summaryrefslogtreecommitdiffstats
path: root/external/meta-updater/scripts/ci/Jenkinsfile.bleeding
blob: 6d340fde0c3fd7d49f0376600984511323f08268 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// This CI setup checks out aktualizr, meta-updater and updater-repo and builds
// master branches whenever a change is pushed to any of these

// define these for docker image creation
node {
  // might cause some problems:
  // https://stackoverflow.com/questions/44805076/setting-build-args-for-dockerfile-agent-using-a-jenkins-declarative-pipeline
  JENKINS_UID = sh(returnStdout: true, script: 'id -u').trim()
  JENKINS_GID = sh(returnStdout: true, script: 'id -g').trim()
}

pipeline {
  agent any
  environment {
    TEST_AKTUALIZR_REMOTE = 'aktualizr'
    TEST_AKTUALIZR_DIR = 'aktualizr'
    TEST_AKTUALIZR_BRANCH = 'master'
    TEST_BITBAKE_COMMON_DIR = "/opt/jenkins/bitbake-common"
  }
  stages {
    stage('checkout') {
      steps {

        checkout([$class: 'GitSCM',
            userRemoteConfigs: [
              [url: 'https://github.com/advancedtelematic/aktualizr', name: 'aktualizr']
            ],
            branches: [[name: 'refs/heads/master']],
            extensions: [
              [$class: 'DisableRemotePoll'],
              [$class: 'PruneStaleBranch'],
              [$class: 'RelativeTargetDirectory',
                relativeTargetDir: 'aktualizr'
              ]
            ],
        ])

        checkout([$class: 'RepoScm',
            manifestRepositoryUrl: 'https://github.com/advancedtelematic/updater-repo',
            manifestBranch: null,
            manifestFile: 'master.xml',
            manifestGroup: null,
            mirrorDir: null,
            jobs: 0,
            depth: 0,
            localManifest: null,
            destinationDir: 'updater-repo',
            repoUrl: null,
            currentBranch: false,
            resetFirst: true,
            quiet: false,
            trace: false,
            showAllChanges: false,
        ])

        // ignore bitbake build directories in docker
        sh 'echo \'build*\' > .dockerignore'

        // override meta-updater commit with currently tested branch
        sh '''
           META_UPDATER_COMMIT=$(git rev-parse HEAD)
           cd updater-repo/meta-updater
           git checkout $META_UPDATER_COMMIT
           '''
      }
    }
    stage('build-core-image-minimal') {
      agent {
        dockerfile {
          filename 'scripts/ci/Dockerfile.bitbake'
          args '-v /opt/jenkins/bitbake-common:/opt/jenkins/bitbake-common'
          additionalBuildArgs "--build-arg uid=${JENKINS_UID} --build-arg gid=${JENKINS_GID}"
          reuseNode true
        }
      }
      environment {
        TEST_AKTUALIZR_CREDENTIALS = credentials('garage-credentials')
      }
      steps {
        sh 'scripts/ci/configure.sh'

        sh 'scripts/ci/build.sh core-image-minimal'
      }
    }
  }
}
// vim: set ft=groovy tabstop=2 shiftwidth=2 expandtab: