diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/ci/Dockerfile.bitbake | 36 | ||||
| -rw-r--r-- | scripts/ci/Jenkinsfile.bleeding (renamed from scripts/ci/Jenkinsfile) | 41 | ||||
| -rw-r--r-- | scripts/ci/README.adoc | 14 | ||||
| -rwxr-xr-x | scripts/ci/configure.sh | 41 | ||||
| -rw-r--r-- | scripts/ci/local.conf.append | 5 |
5 files changed, 108 insertions, 29 deletions
diff --git a/scripts/ci/Dockerfile.bitbake b/scripts/ci/Dockerfile.bitbake new file mode 100644 index 0000000..4dfafec --- /dev/null +++ b/scripts/ci/Dockerfile.bitbake | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | FROM debian:stable | ||
| 2 | LABEL Description="Image for bitbaking" | ||
| 3 | |||
| 4 | RUN sed -i 's#deb http://deb.debian.org/debian stable main#deb http://deb.debian.org/debian stable main contrib#g' /etc/apt/sources.list | ||
| 5 | RUN sed -i 's#deb http://deb.debian.org/debian stable-updates main#deb http://deb.debian.org/debian stable-updates main contrib#g' /etc/apt/sources.list | ||
| 6 | RUN apt-get update -q && apt-get install -qy \ | ||
| 7 | build-essential \ | ||
| 8 | bzip2 \ | ||
| 9 | chrpath \ | ||
| 10 | cpio \ | ||
| 11 | default-jre \ | ||
| 12 | diffstat \ | ||
| 13 | gawk \ | ||
| 14 | gcc-multilib \ | ||
| 15 | git-core \ | ||
| 16 | iputils-ping \ | ||
| 17 | iproute \ | ||
| 18 | libpython-dev \ | ||
| 19 | libsdl1.2-dev \ | ||
| 20 | locales \ | ||
| 21 | procps \ | ||
| 22 | python \ | ||
| 23 | python3 \ | ||
| 24 | python3-pexpect \ | ||
| 25 | qemu \ | ||
| 26 | socat \ | ||
| 27 | texinfo \ | ||
| 28 | unzip \ | ||
| 29 | wget \ | ||
| 30 | xterm \ | ||
| 31 | xz-utils | ||
| 32 | |||
| 33 | RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen | ||
| 34 | ENV LC_ALL="en_US.UTF-8" | ||
| 35 | ENV LANG="en_US.UTF-8" | ||
| 36 | ENV LANGUAGE="en_US.UTF-8" | ||
diff --git a/scripts/ci/Jenkinsfile b/scripts/ci/Jenkinsfile.bleeding index 83bd49c..6d0f1e7 100644 --- a/scripts/ci/Jenkinsfile +++ b/scripts/ci/Jenkinsfile.bleeding | |||
| @@ -1,24 +1,31 @@ | |||
| 1 | // This CI setup checks out aktualizr, meta-updater and updater-repo and builds | ||
| 2 | // master branches whenever a change is pushed to any of these | ||
| 3 | |||
| 1 | pipeline { | 4 | pipeline { |
| 2 | agent none | 5 | agent none |
| 3 | environment { | 6 | environment { |
| 4 | TEST_LOCAL_CONF_APPEND = 'scripts/ci/local.conf.append' | 7 | TEST_AKTUALIZR_REMOTE = 'aktualizr' |
| 5 | TEST_AKTUALIZR_DIR = 'aktualizr' | 8 | TEST_AKTUALIZR_DIR = 'aktualizr' |
| 6 | TEST_AKTUALIZR_BRANCH = 'origin/master' | 9 | TEST_AKTUALIZR_BRANCH = 'master' |
| 10 | TEST_BITBAKE_COMMON_DIR = "/opt/jenkins/bitbake-common" | ||
| 7 | } | 11 | } |
| 8 | stages { | 12 | stages { |
| 9 | stage('checkout') { | 13 | stage('checkout') { |
| 10 | agent { | 14 | agent any |
| 11 | label 'bitbake' | ||
| 12 | } | ||
| 13 | steps { | 15 | steps { |
| 14 | dir('aktualizr') { | 16 | checkout([$class: 'GitSCM', |
| 15 | checkout([$class: 'GitSCM', | 17 | userRemoteConfigs: [ |
| 16 | userRemoteConfigs: [[url: 'https://github.com/advancedtelematic/aktualizr']], | 18 | [url: 'https://github.com/advancedtelematic/aktualizr', name: 'aktualizr'] |
| 17 | branches: [[name: '*/master']], | 19 | ], |
| 18 | changelog: true, | 20 | branches: [[name: 'refs/heads/master']], |
| 19 | poll: true, | 21 | extensions: [ |
| 20 | ]) | 22 | [$class: 'DisableRemotePoll'], |
| 21 | } | 23 | [$class: 'PruneStaleBranch'], |
| 24 | [$class: 'RelativeTargetDirectory', | ||
| 25 | relativeTargetDir: 'aktualizr' | ||
| 26 | ] | ||
| 27 | ], | ||
| 28 | ]) | ||
| 22 | 29 | ||
| 23 | checkout([$class: 'RepoScm', | 30 | checkout([$class: 'RepoScm', |
| 24 | manifestRepositoryUrl: 'https://github.com/advancedtelematic/updater-repo', | 31 | manifestRepositoryUrl: 'https://github.com/advancedtelematic/updater-repo', |
| @@ -38,6 +45,9 @@ pipeline { | |||
| 38 | showAllChanges: false, | 45 | showAllChanges: false, |
| 39 | ]) | 46 | ]) |
| 40 | 47 | ||
| 48 | // ignore bitbake build directories in docker | ||
| 49 | sh 'echo \'build*\' > .dockerignore' | ||
| 50 | |||
| 41 | // override meta-updater commit with currently tested branch | 51 | // override meta-updater commit with currently tested branch |
| 42 | sh ''' | 52 | sh ''' |
| 43 | META_UPDATER_COMMIT=$(git rev-parse HEAD) | 53 | META_UPDATER_COMMIT=$(git rev-parse HEAD) |
| @@ -48,7 +58,10 @@ pipeline { | |||
| 48 | } | 58 | } |
| 49 | stage('build-core-image-minimal') { | 59 | stage('build-core-image-minimal') { |
| 50 | agent { | 60 | agent { |
| 51 | label 'bitbake' | 61 | dockerfile { |
| 62 | filename 'scripts/ci/Dockerfile.bitbake' | ||
| 63 | args '-v /opt/jenkins/bitbake-common:/opt/jenkins/bitbake-common' | ||
| 64 | } | ||
| 52 | } | 65 | } |
| 53 | steps { | 66 | steps { |
| 54 | sh 'scripts/ci/configure.sh' | 67 | sh 'scripts/ci/configure.sh' |
diff --git a/scripts/ci/README.adoc b/scripts/ci/README.adoc new file mode 100644 index 0000000..222982b --- /dev/null +++ b/scripts/ci/README.adoc | |||
| @@ -0,0 +1,14 @@ | |||
| 1 | = Jenkins setup for running meta-updater CI | ||
| 2 | |||
| 3 | As bitbake is quite resource-hungry, there are some special steps that are | ||
| 4 | needed to run Jenkins CI tasks: | ||
| 5 | |||
| 6 | - docker should be installed and the `jenkins` unix user should belong to | ||
| 7 | the `docker` group | ||
| 8 | - `/opt/jenkins` should exist and have `jenkins:jenkins` permissions, it | ||
| 9 | will be mapped as a volume on the same location in the docker build | ||
| 10 | container | ||
| 11 | |||
| 12 | Note that for nodes running Jenkins slaves as a docker container, the | ||
| 13 | `/opt/jenkins` directory must exist on the host system as well, with | ||
| 14 | permissions matching the user and groupd ids in Jenkins' docker | ||
diff --git a/scripts/ci/configure.sh b/scripts/ci/configure.sh index 36ed059..1e87a7b 100755 --- a/scripts/ci/configure.sh +++ b/scripts/ci/configure.sh | |||
| @@ -8,11 +8,11 @@ TEST_BUILD_DIR=${TEST_BUILD_DIR:-build} | |||
| 8 | TEST_REPO_DIR=${TEST_REPO_DIR:-updater-repo} | 8 | TEST_REPO_DIR=${TEST_REPO_DIR:-updater-repo} |
| 9 | 9 | ||
| 10 | TEST_AKTUALIZR_DIR=${TEST_AKTUALIZR_DIR:-.} | 10 | TEST_AKTUALIZR_DIR=${TEST_AKTUALIZR_DIR:-.} |
| 11 | TEST_LOCAL_CONF_APPEND=${TEST_LOCAL_CONF_APPEND:-} | ||
| 12 | TEST_AKTUALIZR_BRANCH=${TEST_AKTUALIZR_BRANCH:-master} | 11 | TEST_AKTUALIZR_BRANCH=${TEST_AKTUALIZR_BRANCH:-master} |
| 13 | TEST_AKTUALIZR_REV=${TEST_AKTUALIZR_REV:-$(GIT_DIR="${TEST_AKTUALIZR_DIR}/.git" git rev-parse "${TEST_AKTUALIZR_BRANCH}")} | 12 | TEST_AKTUALIZR_REV=${TEST_AKTUALIZR_REV:-$(GIT_DIR="$TEST_AKTUALIZR_DIR/.git" git rev-parse "$TEST_AKTUALIZR_REMOTE/$TEST_AKTUALIZR_BRANCH")} |
| 13 | TEST_BITBAKE_COMMON_DIR=${TEST_BITBAKE_COMMON_DIR:-} | ||
| 14 | 14 | ||
| 15 | # remove existing local.conf, keep | 15 | # move existing conf directory to backup, before generating a new one |
| 16 | rm -rf "${TEST_BUILD_DIR}/conf.old" || true | 16 | rm -rf "${TEST_BUILD_DIR}/conf.old" || true |
| 17 | mv "${TEST_BUILD_DIR}/conf" "${TEST_BUILD_DIR}/conf.old" || true | 17 | mv "${TEST_BUILD_DIR}/conf" "${TEST_BUILD_DIR}/conf.old" || true |
| 18 | 18 | ||
| @@ -23,11 +23,32 @@ echo ">> Running envsetup.sh" | |||
| 23 | . "${TEST_REPO_DIR}/meta-updater/scripts/envsetup.sh" "${TEST_MACHINE}" "${TEST_BUILD_DIR}" | 23 | . "${TEST_REPO_DIR}/meta-updater/scripts/envsetup.sh" "${TEST_MACHINE}" "${TEST_BUILD_DIR}" |
| 24 | ) | 24 | ) |
| 25 | 25 | ||
| 26 | if [[ -n $TEST_LOCAL_CONF_APPEND ]]; then | 26 | set +x |
| 27 | echo ">> Appending to local.conf" | 27 | |
| 28 | REMOTE_AKTUALIZR_BRANCH=$(sed 's#^[^/]*/##g' <<< "$TEST_AKTUALIZR_BRANCH") | 28 | echo ">> Set common bitbake config options" |
| 29 | cat "$TEST_LOCAL_CONF_APPEND" | \ | 29 | cat << EOF > "${TEST_BUILD_DIR}/conf/site.conf" |
| 30 | sed "s/\$<rev-sha1>/$TEST_AKTUALIZR_REV/g" | \ | 30 | SANITY_TESTED_DISTROS = "" |
| 31 | sed "s/\$<rev-branch>/$REMOTE_AKTUALIZR_BRANCH/g" \ | 31 | SSTATE_MIRRORS ?= "file://.* https://bitbake-cache.atsgarage.com/PATH;downloadfilename=PATH" |
| 32 | >> "${TEST_BUILD_DIR}/conf/local.conf" | 32 | IMAGE_FEATURES += "ssh-server-openssh" |
| 33 | |||
| 34 | EOF | ||
| 35 | |||
| 36 | echo ">> Set aktualizr branch in bitbake's config" | ||
| 37 | cat << EOF >> "${TEST_BUILD_DIR}/conf/site.conf" | ||
| 38 | SRCREV_pn-aktualizr = "$TEST_AKTUALIZR_REV" | ||
| 39 | SRCREV_pn-aktualizr-native = "\${SRCREV_pn-aktualizr}" | ||
| 40 | BRANCH_pn-aktualizr = "$TEST_AKTUALIZR_BRANCH" | ||
| 41 | BRANCH_pn-aktualizr-native = "\${BRANCH_pn-aktualizr}" | ||
| 42 | |||
| 43 | EOF | ||
| 44 | |||
| 45 | if [[ -n $TEST_BITBAKE_COMMON_DIR ]]; then | ||
| 46 | echo ">> Set caching" | ||
| 47 | SSTATE_DIR="$TEST_BITBAKE_COMMON_DIR/sstate-cache" | ||
| 48 | DL_DIR="$TEST_BITBAKE_COMMON_DIR/downloads" | ||
| 49 | mkdir -p "$SSTATE_DIR" "$DL_DIR" | ||
| 50 | cat << EOF >> "${TEST_BUILD_DIR}/conf/site.conf" | ||
| 51 | SSTATE_DIR = "$SSTATE_DIR" | ||
| 52 | DL_DIR = "$DL_DIR" | ||
| 53 | EOF | ||
| 33 | fi | 54 | fi |
diff --git a/scripts/ci/local.conf.append b/scripts/ci/local.conf.append deleted file mode 100644 index 350e466..0000000 --- a/scripts/ci/local.conf.append +++ /dev/null | |||
| @@ -1,5 +0,0 @@ | |||
| 1 | SANITY_TESTED_DISTROS = "" | ||
| 2 | SRCREV_pn-aktualizr = "$<rev-sha1>" | ||
| 3 | SRCREV_pn-aktualizr-native = "${SRCREV_pn-aktualizr}" | ||
| 4 | BRANCH_pn-aktualizr = "$<rev-branch>" | ||
| 5 | BRANCH_pn-aktualizr-native = "${BRANCH_pn-aktualizr}" | ||
