sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #05853
[Merge] ~adam-collard/maas-ci/+git/maas-ci-internal:build-env-site-manager into ~maas-committers/maas-ci/+git/maas-ci-internal:main
Adam Collard has proposed merging ~adam-collard/maas-ci/+git/maas-ci-internal:build-env-site-manager into ~maas-committers/maas-ci/+git/maas-ci-internal:main.
Commit message:
WiP: Add build-env-maas-site-manager
Requested reviews:
MAAS Committers (maas-committers)
For more details, see:
https://code.launchpad.net/~adam-collard/maas-ci/+git/maas-ci-internal/+merge/438687
--
Your team MAAS Committers is requested to review the proposed merge of ~adam-collard/maas-ci/+git/maas-ci-internal:build-env-site-manager into ~maas-committers/maas-ci/+git/maas-ci-internal:main.
diff --git a/Dockerfile b/Dockerfile
index fdbc3c6..12e9fe1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,17 +2,14 @@ ARG SERIES=bionic
FROM ubuntu:${SERIES}
ARG CACHE_BUST
-ARG GIT_REPOS="git://git.launchpad.net/maas"
-ARG GIT_BRANCH="master"
ARG MAKE_TARGET="install-dependencies"
-ENV GIT_REPOS=${GIT_REPOS}
-ENV GIT_BRANCH=${GIT_BRANCH}
ENV MAKE_TARGET=${MAKE_TARGET}
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /work
+ADD checkout checkout
RUN set -ex ;\
if [ ! -z $http_proxy ]; then \
echo "Acquire::https::proxy \"$http_proxy\";" > /etc/apt/apt.conf.d/maas-proxy ;\
@@ -39,6 +36,5 @@ RUN set -ex
wget
RUN set -ex ;\
- git clone ${GIT_REPOS} --single-branch --branch ${GIT_BRANCH} --depth 1 /work/checkout ;\
make -C /work/checkout ${MAKE_TARGET} ;\
rm -rf /work/checkout
diff --git a/jobs/build-env-maas-site-manager.groovy b/jobs/build-env-maas-site-manager.groovy
new file mode 100644
index 0000000..2e82b5f
--- /dev/null
+++ b/jobs/build-env-maas-site-manager.groovy
@@ -0,0 +1,48 @@
+pipeline {
+ agent {
+ node {
+ label 'maas-tester'
+ }
+ }
+ stages {
+ stage('Checkout') {
+ steps {
+ withCredentials([sshUserPrivateKey(credentialsId: 'launchpad-ci-ssh-key', keyFileVariable: 'SSHKEY', usernameVariable: 'SSHUSER')]) {
+ script {
+ env.GIT_SSH_COMMAND = "ssh -i $SSHKEY -l $SSHUSER"
+ env.targetShortHash = sh(returnStdout: true, script: "git ls-remote git+ssh://${LP_REPOS} -b ${LP_BRANCH} | cut -f1").trim()
+ }
+ sh '''
+ rm -rf ci-utils launchpad-ci maas-site-manager maas_target_os_release
+ git clone git+ssh://git.launchpad.net/{{ git_ci_repos }} --single-branch --branch main --recurse-submodules --depth 1 ci-utils
+ if [ "${SERIES}" != "auto" ]; then
+ echo ${SERIES} > maas_target_os_release
+ else
+ ci-utils/jobs/launchpad-ci/repo-ubuntu-release ${LP_REPOS} ${LP_BRANCH} > maas_target_os_release
+ fi
+ '''
+ }
+ script {
+ def shortHash = sh(returnStdout: true, script: "git -C ci-utils rev-parse --short HEAD").trim()
+ currentBuild.description = "Build environment: maas-ci-utils ${shortHash} - maas ${targetShortHash}"
+ }
+ }
+ }
+ stage('Build image') {
+ steps {
+ checkout changelog: false, poll: false, scm: scmGit(branches: [[name: "ref/heads/${LP_BRANCH}"]], extensions: [cloneOption(depth: 1, honorRefspec: true, noTags: true, reference: '', shallow: true)], userRemoteConfigs: [[credentialsId: 'launchpad-ci-ssh-key', url: "git+ssh://${LP_REPOS}"]])
+ script {
+ def os_release = sh(script:'cat maas_target_os_release', returnStdout: true).trim()
+ def os_series = sh(script:"awk -F, \"/\$(echo ${os_release} | sed -e's/./\\.')/{ print \$3 }\" /usr/share/distro-info/ubuntu.csv", returnStdout: true).trim()
+ docker.withRegistry("{{ docker_registry }}", "{{ docker_registry_cred }}") {
+ def img = docker.build("build-env-{{ target }}-{{ series }}:${os_release}", "--build-arg 'SERIES=${os_release}' --build-arg CACHE_BUST='${BUILD_ID}' -f ci-utils/Dockerfile .")
+ img.push()
+ if (os_series) {
+ img.push("${os_series}")
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/jobs/build-env-maas-site-manager.yaml b/jobs/build-env-maas-site-manager.yaml
new file mode 100644
index 0000000..0ba7490
--- /dev/null
+++ b/jobs/build-env-maas-site-manager.yaml
@@ -0,0 +1,46 @@
+- project:
+ name: build-env-site-manager
+ target: maas-site-manager
+ lp-repos: "git.launchpad.net/maas-site-manager"
+ ubuntu: "22.10"
+ series:
+ - main:
+ build-freq: 'H H(0-2) * * *'
+ jobs:
+ - "build-env-maas-site-manager-{series}-{ubuntu}":
+ lp-branch: "{series}"
+ views:
+ - "build-env-maas-site-manager"
+
+- view-template:
+ name: "build-env-maas-site-manager"
+ description: "Build env builder for MAAS Site Manager"
+ view-type: list
+ regex: "build-env-maas-site-manager-.*"
+
+- job-template:
+ name: "build-env-maas-site-manager-{series}-{ubuntu}"
+ build-freq: 'H H * * 6'
+ git_ci_repos: ~maas-committers/maas-ci/+git/maas-ci-internal
+ lp-branch: "main"
+ parameters:
+ - string:
+ description: "Source repos"
+ name: "LP_REPOS"
+ default: "{lp-repos}"
+ - string:
+ description: "Source branch"
+ name: "LP_BRANCH"
+ default: "{lp-branch}"
+ - string:
+ description: |
+ Ubuntu series to run tests on.
+ If set to 'auto', defaults to the target series for the branch.
+ name: "SERIES"
+ default: "{ubuntu}"
+ triggers:
+ - timed: "{build-freq}"
+ properties:
+ - build-discarder:
+ artifact-num-to-keep: 5
+ dsl: !include-jinja2: build-env-maas-site-manager.groovy
diff --git a/jobs/build-env-maas.groovy b/jobs/build-env-maas.groovy
index 8c3b409..c9bb084 100644
--- a/jobs/build-env-maas.groovy
+++ b/jobs/build-env-maas.groovy
@@ -30,12 +30,13 @@ pipeline {
}
stage('Build image') {
steps {
+ checkout changelog: false, poll: false, scm: scmGit(branches: [[name: "ref/heads/${LP_BRANCH}"]], extensions: [cloneOption(depth: 1, honorRefspec: true, noTags: true, reference: '', shallow: true)], userRemoteConfigs: [[credentialsId: 'launchpad-ci-ssh-key', url: "git://${LP_REPOS}"]])
script {
def os_release = sh(script:'cat maas_target_os_release', returnStdout: true).trim()
def os_series = sh(script:"sed -n 's/^${os_release}[^,]\\+,[^,]\\+,\\([^,]\\+\\),.*/\\1/p' /usr/share/distro-info/ubuntu.csv", returnStdout: true).trim()
docker.withRegistry("{{ docker_registry }}", "{{ docker_registry_cred }}") {
- def img = docker.build("build-env-{{ target }}-{{ series }}:${os_release}", "--build-arg 'SERIES=${os_release}' --build-arg 'GIT_REPOS=git://${LP_REPOS}' --build-arg 'GIT_BRANCH=${LP_BRANCH}' --build-arg CACHE_BUST='${BUILD_ID}' -f ci-utils/Dockerfile .")
+ def img = docker.build("build-env-{{ target }}-{{ series }}:${os_release}", "--build-arg 'SERIES=${os_release}' --build-arg CACHE_BUST='${BUILD_ID}' -f ci-utils/Dockerfile .")
img.push()
if (os_series) {
img.push("${os_series}")
References