From fa634695aa108e6d433e4e8141d68d757a74861b Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Mon, 25 Jun 2018 14:27:16 +0200 Subject: Run oe-selftest on Jenkins CI --- scripts/ci/Jenkinsfile.bleeding | 11 +++++++++++ scripts/ci/oe-selftest.sh | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 scripts/ci/oe-selftest.sh (limited to 'scripts/ci') diff --git a/scripts/ci/Jenkinsfile.bleeding b/scripts/ci/Jenkinsfile.bleeding index 6d0f1e7..aba7d39 100644 --- a/scripts/ci/Jenkinsfile.bleeding +++ b/scripts/ci/Jenkinsfile.bleeding @@ -69,6 +69,17 @@ pipeline { sh 'scripts/ci/build.sh core-image-minimal' } } + stage('oe-selftest') { + agent { + dockerfile { + filename 'scripts/ci/Dockerfile.bitbake' + args '-v /opt/jenkins/bitbake-common:/opt/jenkins/bitbake-common' + } + } + steps { + sh 'scripts/ci/oe-selftest.sh' + } + } } } // vim: set ft=groovy tabstop=2 shiftwidth=2 expandtab: diff --git a/scripts/ci/oe-selftest.sh b/scripts/ci/oe-selftest.sh new file mode 100755 index 0000000..3124cce --- /dev/null +++ b/scripts/ci/oe-selftest.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# run meta-updater's oe-selftests + +set -euo pipefail +set -x + +TEST_MACHINE=${TEST_MACHINE:-qemux86-64} +TEST_BUILD_DIR=${TEST_BUILD_DIR:-build} +TEST_REPO_DIR=${TEST_REPO_DIR:-updater-repo} + +( +set +euo pipefail +set +x +. "${TEST_REPO_DIR}/meta-updater/scripts/envsetup.sh" "${TEST_MACHINE}" "${TEST_BUILD_DIR}" + +oe-selftest -r updater +) -- cgit v1.2.3-54-g00ecf From 0d3b28dac079df41132d4a80cc232105cde1bcc3 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Tue, 26 Jun 2018 14:46:45 +0200 Subject: Install ovmf in ci Dockerfile For qemu tests --- scripts/ci/Dockerfile.bitbake | 1 + 1 file changed, 1 insertion(+) (limited to 'scripts/ci') diff --git a/scripts/ci/Dockerfile.bitbake b/scripts/ci/Dockerfile.bitbake index 4dfafec..9d34dca 100644 --- a/scripts/ci/Dockerfile.bitbake +++ b/scripts/ci/Dockerfile.bitbake @@ -18,6 +18,7 @@ RUN apt-get update -q && apt-get install -qy \ libpython-dev \ libsdl1.2-dev \ locales \ + ovmf \ procps \ python \ python3 \ -- cgit v1.2.3-54-g00ecf From 7023fdda425f9d5e3b48e2cd12f961c0060ace54 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Tue, 26 Jun 2018 15:53:00 +0200 Subject: Setup garage credentials for oe-selftest CI --- scripts/ci/Jenkinsfile.bleeding | 16 +++++----------- scripts/ci/configure.sh | 25 ++++++++++++++++++------- 2 files changed, 23 insertions(+), 18 deletions(-) (limited to 'scripts/ci') diff --git a/scripts/ci/Jenkinsfile.bleeding b/scripts/ci/Jenkinsfile.bleeding index aba7d39..f4d8883 100644 --- a/scripts/ci/Jenkinsfile.bleeding +++ b/scripts/ci/Jenkinsfile.bleeding @@ -56,27 +56,21 @@ pipeline { ''' } } - stage('build-core-image-minimal') { + stage('build-core-image-minimal+oe-selftest') { agent { dockerfile { filename 'scripts/ci/Dockerfile.bitbake' args '-v /opt/jenkins/bitbake-common:/opt/jenkins/bitbake-common' } } + environment { + TEST_AKTUALIZR_CREDENTIALS = credentials('garage-credentials') + } steps { sh 'scripts/ci/configure.sh' sh 'scripts/ci/build.sh core-image-minimal' - } - } - stage('oe-selftest') { - agent { - dockerfile { - filename 'scripts/ci/Dockerfile.bitbake' - args '-v /opt/jenkins/bitbake-common:/opt/jenkins/bitbake-common' - } - } - steps { + sh 'scripts/ci/oe-selftest.sh' } } diff --git a/scripts/ci/configure.sh b/scripts/ci/configure.sh index 1e87a7b..960a0cc 100755 --- a/scripts/ci/configure.sh +++ b/scripts/ci/configure.sh @@ -6,27 +6,30 @@ set -x TEST_MACHINE=${TEST_MACHINE:-qemux86-64} TEST_BUILD_DIR=${TEST_BUILD_DIR:-build} TEST_REPO_DIR=${TEST_REPO_DIR:-updater-repo} +TEST_BITBAKE_COMMON_DIR=${TEST_BITBAKE_COMMON_DIR:-} TEST_AKTUALIZR_DIR=${TEST_AKTUALIZR_DIR:-.} TEST_AKTUALIZR_BRANCH=${TEST_AKTUALIZR_BRANCH:-master} TEST_AKTUALIZR_REV=${TEST_AKTUALIZR_REV:-$(GIT_DIR="$TEST_AKTUALIZR_DIR/.git" git rev-parse "$TEST_AKTUALIZR_REMOTE/$TEST_AKTUALIZR_BRANCH")} -TEST_BITBAKE_COMMON_DIR=${TEST_BITBAKE_COMMON_DIR:-} +TEST_AKTUALIZR_CREDENTIALS=${TEST_AKTUALIZR_CREDENTIALS:-} # move existing conf directory to backup, before generating a new one -rm -rf "${TEST_BUILD_DIR}/conf.old" || true -mv "${TEST_BUILD_DIR}/conf" "${TEST_BUILD_DIR}/conf.old" || true +rm -rf "$TEST_BUILD_DIR/conf.old" || true +mv "$TEST_BUILD_DIR/conf" "$TEST_BUILD_DIR/conf.old" || true ( set +euo pipefail set +x echo ">> Running envsetup.sh" -. "${TEST_REPO_DIR}/meta-updater/scripts/envsetup.sh" "${TEST_MACHINE}" "${TEST_BUILD_DIR}" +. "$TEST_REPO_DIR/meta-updater/scripts/envsetup.sh" "$TEST_MACHINE" "$TEST_BUILD_DIR" ) set +x +SITE_CONF="$TEST_BUILD_DIR/conf/site.conf" + echo ">> Set common bitbake config options" -cat << EOF > "${TEST_BUILD_DIR}/conf/site.conf" +cat << EOF > "$SITE_CONF" SANITY_TESTED_DISTROS = "" SSTATE_MIRRORS ?= "file://.* https://bitbake-cache.atsgarage.com/PATH;downloadfilename=PATH" IMAGE_FEATURES += "ssh-server-openssh" @@ -34,7 +37,7 @@ IMAGE_FEATURES += "ssh-server-openssh" EOF echo ">> Set aktualizr branch in bitbake's config" -cat << EOF >> "${TEST_BUILD_DIR}/conf/site.conf" +cat << EOF >> "$SITE_CONF" SRCREV_pn-aktualizr = "$TEST_AKTUALIZR_REV" SRCREV_pn-aktualizr-native = "\${SRCREV_pn-aktualizr}" BRANCH_pn-aktualizr = "$TEST_AKTUALIZR_BRANCH" @@ -42,12 +45,20 @@ BRANCH_pn-aktualizr-native = "\${BRANCH_pn-aktualizr}" EOF +if [[ -n $TEST_AKTUALIZR_CREDENTIALS ]]; then + echo ">> Set aktualizr credentials" + cat << EOF >> "$SITE_CONF" +SOTA_PACKED_CREDENTIALS = "$TEST_AKTUALIZR_CREDENTIALS" +EOF +fi + if [[ -n $TEST_BITBAKE_COMMON_DIR ]]; then echo ">> Set caching" SSTATE_DIR="$TEST_BITBAKE_COMMON_DIR/sstate-cache" DL_DIR="$TEST_BITBAKE_COMMON_DIR/downloads" mkdir -p "$SSTATE_DIR" "$DL_DIR" - cat << EOF >> "${TEST_BUILD_DIR}/conf/site.conf" + + cat << EOF >> "$SITE_CONF" SSTATE_DIR = "$SSTATE_DIR" DL_DIR = "$DL_DIR" EOF -- cgit v1.2.3-54-g00ecf From 1b3616e68408a881df58e1bb806bc9c78828f779 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Wed, 27 Jun 2018 11:13:06 +0200 Subject: Create a user with correct uid inside CI's Dockerfile --- scripts/ci/Dockerfile.bitbake | 5 +++++ scripts/ci/Jenkinsfile.bleeding | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'scripts/ci') diff --git a/scripts/ci/Dockerfile.bitbake b/scripts/ci/Dockerfile.bitbake index 9d34dca..c91f94c 100644 --- a/scripts/ci/Dockerfile.bitbake +++ b/scripts/ci/Dockerfile.bitbake @@ -31,6 +31,11 @@ RUN apt-get update -q && apt-get install -qy \ xterm \ xz-utils +ARG uid=1000 +ARG gid=1000 +RUN groupadd -g $gid bitbake +RUN useradd -m -u $uid -g $gid bitbake + RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen ENV LC_ALL="en_US.UTF-8" ENV LANG="en_US.UTF-8" diff --git a/scripts/ci/Jenkinsfile.bleeding b/scripts/ci/Jenkinsfile.bleeding index f4d8883..e50b4b6 100644 --- a/scripts/ci/Jenkinsfile.bleeding +++ b/scripts/ci/Jenkinsfile.bleeding @@ -1,8 +1,16 @@ // 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 none + agent any environment { TEST_AKTUALIZR_REMOTE = 'aktualizr' TEST_AKTUALIZR_DIR = 'aktualizr' @@ -11,8 +19,8 @@ pipeline { } stages { stage('checkout') { - agent any steps { + checkout([$class: 'GitSCM', userRemoteConfigs: [ [url: 'https://github.com/advancedtelematic/aktualizr', name: 'aktualizr'] @@ -61,6 +69,8 @@ pipeline { 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 { -- cgit v1.2.3-54-g00ecf From 12ee01db91117005b79a9264d8509a2daf86fa80 Mon Sep 17 00:00:00 2001 From: Laurent Bonnans Date: Wed, 27 Jun 2018 16:07:20 +0200 Subject: Split yocto builds from yocto selftests In a separate Jenkinsfile right now, with a lot of duplication. Let's hope to find a cleaner way --- scripts/ci/Jenkinsfile.bleeding | 4 +- scripts/ci/Jenkinsfile.bleeding-selftest | 89 ++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 scripts/ci/Jenkinsfile.bleeding-selftest (limited to 'scripts/ci') diff --git a/scripts/ci/Jenkinsfile.bleeding b/scripts/ci/Jenkinsfile.bleeding index e50b4b6..6d340fd 100644 --- a/scripts/ci/Jenkinsfile.bleeding +++ b/scripts/ci/Jenkinsfile.bleeding @@ -64,7 +64,7 @@ pipeline { ''' } } - stage('build-core-image-minimal+oe-selftest') { + stage('build-core-image-minimal') { agent { dockerfile { filename 'scripts/ci/Dockerfile.bitbake' @@ -80,8 +80,6 @@ pipeline { sh 'scripts/ci/configure.sh' sh 'scripts/ci/build.sh core-image-minimal' - - sh 'scripts/ci/oe-selftest.sh' } } } diff --git a/scripts/ci/Jenkinsfile.bleeding-selftest b/scripts/ci/Jenkinsfile.bleeding-selftest new file mode 100644 index 0000000..e50b4b6 --- /dev/null +++ b/scripts/ci/Jenkinsfile.bleeding-selftest @@ -0,0 +1,89 @@ +// 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+oe-selftest') { + 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' + + sh 'scripts/ci/oe-selftest.sh' + } + } + } +} +// vim: set ft=groovy tabstop=2 shiftwidth=2 expandtab: -- cgit v1.2.3-54-g00ecf