2019-07-30 20:07:30 -04:00
|
|
|
#!groovy
|
2019-01-10 15:08:10 -05:00
|
|
|
pipeline {
|
2019-08-02 11:34:38 -04:00
|
|
|
agent none
|
2019-07-22 17:19:35 -04:00
|
|
|
|
2019-08-02 11:34:38 -04:00
|
|
|
options {
|
|
|
|
buildDiscarder(logRotator(daysToKeepStr: '30'))
|
2019-08-08 22:08:21 -04:00
|
|
|
timeout(time: 2, unit: 'HOURS')
|
2019-08-02 11:34:38 -04:00
|
|
|
timestamps()
|
|
|
|
}
|
|
|
|
parameters {
|
2019-08-06 17:52:14 -04:00
|
|
|
booleanParam(name: 'arm64', defaultValue: true, description: 'ARM (arm64) Build/Test')
|
2021-05-12 06:38:41 -04:00
|
|
|
booleanParam(name: 's390x', defaultValue: false, description: 'IBM Z (s390x) Build/Test')
|
|
|
|
booleanParam(name: 'ppc64le', defaultValue: false, description: 'PowerPC (ppc64le) Build/Test')
|
2019-10-31 11:51:45 -04:00
|
|
|
booleanParam(name: 'dco', defaultValue: true, description: 'Run the DCO check')
|
2019-08-02 11:34:38 -04:00
|
|
|
}
|
2019-08-02 11:49:51 -04:00
|
|
|
environment {
|
2019-08-03 10:58:46 -04:00
|
|
|
DOCKER_BUILDKIT = '1'
|
2019-08-09 12:12:29 -04:00
|
|
|
DOCKER_EXPERIMENTAL = '1'
|
2019-08-03 11:10:51 -04:00
|
|
|
DOCKER_GRAPHDRIVER = 'overlay2'
|
2019-08-03 10:58:46 -04:00
|
|
|
APT_MIRROR = 'cdn-fastly.deb.debian.org'
|
2021-11-10 11:10:45 -05:00
|
|
|
CHECK_CONFIG_COMMIT = '33a3680e08d1007e72c3b3f1454f823d8e9948ee'
|
2019-08-23 15:46:55 -04:00
|
|
|
TESTDEBUG = '0'
|
2019-08-08 22:08:21 -04:00
|
|
|
TIMEOUT = '120m'
|
2019-08-02 11:49:51 -04:00
|
|
|
}
|
2019-08-02 11:34:38 -04:00
|
|
|
stages {
|
2019-09-03 15:26:21 -04:00
|
|
|
stage('pr-hack') {
|
|
|
|
when { changeRequest() }
|
|
|
|
steps {
|
|
|
|
script {
|
|
|
|
echo "Workaround for PR auto-cancel feature. Borrowed from https://issues.jenkins-ci.org/browse/JENKINS-43353"
|
|
|
|
def buildNumber = env.BUILD_NUMBER as int
|
|
|
|
if (buildNumber > 1) milestone(buildNumber - 1)
|
|
|
|
milestone(buildNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-08-11 11:26:26 -04:00
|
|
|
stage('DCO-check') {
|
|
|
|
when {
|
|
|
|
beforeAgent true
|
2019-10-31 11:51:45 -04:00
|
|
|
expression { params.dco }
|
2019-08-11 11:26:26 -04:00
|
|
|
}
|
2021-10-15 13:27:40 -04:00
|
|
|
agent { label 'arm64 && ubuntu-2004' }
|
2019-08-11 11:26:26 -04:00
|
|
|
steps {
|
|
|
|
sh '''
|
|
|
|
docker run --rm \
|
|
|
|
-v "$WORKSPACE:/workspace" \
|
2019-10-21 16:48:03 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2022-04-13 09:58:55 -04:00
|
|
|
alpine sh -c 'apk add --no-cache -q bash git openssh-client && git config --system --add safe.directory /workspace && cd /workspace && hack/validate/dco'
|
2019-08-11 11:26:26 -04:00
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
2019-08-02 11:34:38 -04:00
|
|
|
stage('Build') {
|
|
|
|
parallel {
|
2019-09-10 03:46:19 -04:00
|
|
|
stage('s390x') {
|
2019-08-02 11:34:38 -04:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2021-05-12 06:38:41 -04:00
|
|
|
// Skip this stage on PRs unless the checkbox is selected
|
|
|
|
anyOf {
|
|
|
|
not { changeRequest() }
|
|
|
|
expression { params.s390x }
|
|
|
|
}
|
2019-08-02 11:34:38 -04:00
|
|
|
}
|
2021-06-29 10:27:56 -04:00
|
|
|
agent { label 's390x-ubuntu-2004' }
|
2019-08-02 12:37:58 -04:00
|
|
|
|
|
|
|
stages {
|
2019-08-02 14:20:22 -04:00
|
|
|
stage("Print info") {
|
|
|
|
steps {
|
|
|
|
sh 'docker version'
|
|
|
|
sh 'docker info'
|
2019-08-03 10:58:46 -04:00
|
|
|
sh '''
|
|
|
|
echo "check-config.sh version: ${CHECK_CONFIG_COMMIT}"
|
|
|
|
curl -fsSL -o ${WORKSPACE}/check-config.sh "https://raw.githubusercontent.com/moby/moby/${CHECK_CONFIG_COMMIT}/contrib/check-config.sh" \
|
|
|
|
&& bash ${WORKSPACE}/check-config.sh || true
|
|
|
|
'''
|
2019-08-02 14:20:22 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
stage("Build dev image") {
|
|
|
|
steps {
|
|
|
|
sh '''
|
2020-03-10 16:56:56 -04:00
|
|
|
docker build --force-rm --build-arg APT_MIRROR -t docker:${GIT_COMMIT} .
|
2019-08-02 12:37:58 -04:00
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
2019-08-03 13:57:50 -04:00
|
|
|
stage("Unit tests") {
|
|
|
|
steps {
|
2021-05-25 18:06:51 -04:00
|
|
|
sh '''
|
|
|
|
sudo modprobe ip6table_filter
|
|
|
|
'''
|
2019-08-03 13:57:50 -04:00
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
|
|
|
--name docker-pr$BUILD_NUMBER \
|
2019-08-09 12:12:29 -04:00
|
|
|
-e DOCKER_EXPERIMENTAL \
|
2019-08-03 13:57:50 -04:00
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2019-10-03 11:39:08 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-03 13:57:50 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
2021-04-27 18:40:39 -04:00
|
|
|
hack/test/unit
|
2019-08-03 13:57:50 -04:00
|
|
|
'''
|
|
|
|
}
|
2019-08-11 09:15:55 -04:00
|
|
|
post {
|
|
|
|
always {
|
2021-07-02 15:29:04 -04:00
|
|
|
junit testResults: 'bundles/junit-report*.xml', allowEmptyResults: true
|
2019-08-11 09:15:55 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-03 13:57:50 -04:00
|
|
|
}
|
|
|
|
stage("Integration tests") {
|
2019-08-09 19:02:43 -04:00
|
|
|
environment { TEST_SKIP_INTEGRATION_CLI = '1' }
|
2019-08-02 12:37:58 -04:00
|
|
|
steps {
|
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
2019-08-03 13:08:06 -04:00
|
|
|
--name docker-pr$BUILD_NUMBER \
|
2019-08-09 12:12:29 -04:00
|
|
|
-e DOCKER_EXPERIMENTAL \
|
2019-08-03 13:08:06 -04:00
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2019-08-23 15:46:55 -04:00
|
|
|
-e TESTDEBUG \
|
2022-10-17 08:29:05 -04:00
|
|
|
-e TEST_INTEGRATION_USE_SNAPSHOTTER \
|
2019-08-09 19:02:43 -04:00
|
|
|
-e TEST_SKIP_INTEGRATION_CLI \
|
2019-08-08 22:08:21 -04:00
|
|
|
-e TIMEOUT \
|
2019-10-03 11:39:08 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-03 13:08:06 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
2019-08-03 13:57:50 -04:00
|
|
|
hack/make.sh \
|
|
|
|
dynbinary \
|
|
|
|
test-integration
|
2019-08-02 12:37:58 -04:00
|
|
|
'''
|
|
|
|
}
|
2019-08-11 14:32:49 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
junit testResults: 'bundles/**/*-report.xml', allowEmptyResults: true
|
|
|
|
}
|
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
}
|
2019-08-02 11:34:38 -04:00
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
|
2019-08-02 11:34:38 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
sh '''
|
|
|
|
echo "Ensuring container killed."
|
2019-08-03 14:05:12 -04:00
|
|
|
docker rm -vf docker-pr$BUILD_NUMBER || true
|
2019-08-02 12:51:51 -04:00
|
|
|
'''
|
|
|
|
|
|
|
|
sh '''
|
2019-08-02 11:34:38 -04:00
|
|
|
echo "Chowning /workspace to jenkins user"
|
2019-08-02 12:49:33 -04:00
|
|
|
docker run --rm -v "$WORKSPACE:/workspace" busybox chown -R "$(id -u):$(id -g)" /workspace
|
2019-08-02 11:34:38 -04:00
|
|
|
'''
|
2019-08-02 12:37:58 -04:00
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
|
|
|
|
sh '''
|
|
|
|
bundleName=s390x-integration
|
|
|
|
echo "Creating ${bundleName}-bundles.tar.gz"
|
|
|
|
# exclude overlay2 directories
|
2019-08-11 14:32:49 -04:00
|
|
|
find bundles -path '*/root/*overlay2' -prune -o -type f \\( -name '*-report.json' -o -name '*.log' -o -name '*.prof' -o -name '*-report.xml' \\) -print | xargs tar -czf ${bundleName}-bundles.tar.gz
|
2019-08-24 08:14:56 -04:00
|
|
|
'''
|
2019-08-02 12:41:50 -04:00
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
archiveArtifacts artifacts: '*-bundles.tar.gz', allowEmptyArchive: true
|
|
|
|
}
|
2019-08-02 12:41:50 -04:00
|
|
|
}
|
|
|
|
cleanup {
|
|
|
|
sh 'make clean'
|
2019-08-02 11:34:38 -04:00
|
|
|
deleteDir()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-09-10 03:46:19 -04:00
|
|
|
stage('s390x integration-cli') {
|
2019-08-08 22:00:57 -04:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2022-04-06 09:34:38 -04:00
|
|
|
// Skip this stage on PRs unless the checkbox is selected
|
|
|
|
anyOf {
|
|
|
|
not { changeRequest() }
|
|
|
|
expression { params.s390x }
|
|
|
|
}
|
2019-08-08 22:00:57 -04:00
|
|
|
}
|
2021-06-29 10:27:56 -04:00
|
|
|
agent { label 's390x-ubuntu-2004' }
|
2019-08-08 22:00:57 -04:00
|
|
|
|
|
|
|
stages {
|
|
|
|
stage("Print info") {
|
|
|
|
steps {
|
|
|
|
sh 'docker version'
|
|
|
|
sh 'docker info'
|
|
|
|
sh '''
|
|
|
|
echo "check-config.sh version: ${CHECK_CONFIG_COMMIT}"
|
|
|
|
curl -fsSL -o ${WORKSPACE}/check-config.sh "https://raw.githubusercontent.com/moby/moby/${CHECK_CONFIG_COMMIT}/contrib/check-config.sh" \
|
|
|
|
&& bash ${WORKSPACE}/check-config.sh || true
|
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Build dev image") {
|
|
|
|
steps {
|
|
|
|
sh '''
|
2020-03-10 16:56:56 -04:00
|
|
|
docker build --force-rm --build-arg APT_MIRROR -t docker:${GIT_COMMIT} .
|
2019-08-08 22:00:57 -04:00
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Integration-cli tests") {
|
2019-08-09 19:02:43 -04:00
|
|
|
environment { TEST_SKIP_INTEGRATION = '1' }
|
2019-08-08 22:00:57 -04:00
|
|
|
steps {
|
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
|
|
|
--name docker-pr$BUILD_NUMBER \
|
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2022-10-17 08:29:05 -04:00
|
|
|
-e TEST_INTEGRATION_USE_SNAPSHOTTER \
|
2019-08-09 19:02:43 -04:00
|
|
|
-e TEST_SKIP_INTEGRATION \
|
2019-08-08 22:08:21 -04:00
|
|
|
-e TIMEOUT \
|
2019-10-03 11:39:08 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-08 22:00:57 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
|
|
|
hack/make.sh \
|
|
|
|
dynbinary \
|
|
|
|
test-integration
|
|
|
|
'''
|
|
|
|
}
|
2019-08-11 14:32:49 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
junit testResults: 'bundles/**/*-report.xml', allowEmptyResults: true
|
|
|
|
}
|
|
|
|
}
|
2019-08-08 22:00:57 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
post {
|
|
|
|
always {
|
|
|
|
sh '''
|
|
|
|
echo "Ensuring container killed."
|
|
|
|
docker rm -vf docker-pr$BUILD_NUMBER || true
|
|
|
|
'''
|
|
|
|
|
|
|
|
sh '''
|
|
|
|
echo "Chowning /workspace to jenkins user"
|
|
|
|
docker run --rm -v "$WORKSPACE:/workspace" busybox chown -R "$(id -u):$(id -g)" /workspace
|
|
|
|
'''
|
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
|
|
|
|
sh '''
|
|
|
|
bundleName=s390x-integration-cli
|
|
|
|
echo "Creating ${bundleName}-bundles.tar.gz"
|
|
|
|
# exclude overlay2 directories
|
2019-08-11 14:32:49 -04:00
|
|
|
find bundles -path '*/root/*overlay2' -prune -o -type f \\( -name '*-report.json' -o -name '*.log' -o -name '*.prof' -o -name '*-report.xml' \\) -print | xargs tar -czf ${bundleName}-bundles.tar.gz
|
2019-08-24 08:14:56 -04:00
|
|
|
'''
|
2019-08-08 22:00:57 -04:00
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
archiveArtifacts artifacts: '*-bundles.tar.gz', allowEmptyArchive: true
|
|
|
|
}
|
2019-08-08 22:00:57 -04:00
|
|
|
}
|
|
|
|
cleanup {
|
|
|
|
sh 'make clean'
|
|
|
|
deleteDir()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-09-10 03:46:19 -04:00
|
|
|
stage('ppc64le') {
|
2019-08-02 11:34:38 -04:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2021-05-12 06:38:41 -04:00
|
|
|
// Skip this stage on PRs unless the checkbox is selected
|
|
|
|
anyOf {
|
|
|
|
not { changeRequest() }
|
|
|
|
expression { params.ppc64le }
|
|
|
|
}
|
2019-08-02 11:34:38 -04:00
|
|
|
}
|
|
|
|
agent { label 'ppc64le-ubuntu-1604' }
|
2019-10-14 13:22:56 -04:00
|
|
|
// ppc64le machines run on Docker 18.06, and buildkit has some
|
|
|
|
// bugs on that version. Build and use buildx instead.
|
|
|
|
environment {
|
|
|
|
USE_BUILDX = '1'
|
|
|
|
DOCKER_BUILDKIT = '0'
|
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
|
|
|
|
stages {
|
2019-08-02 14:20:22 -04:00
|
|
|
stage("Print info") {
|
|
|
|
steps {
|
|
|
|
sh 'docker version'
|
|
|
|
sh 'docker info'
|
2019-08-03 10:58:46 -04:00
|
|
|
sh '''
|
|
|
|
echo "check-config.sh version: ${CHECK_CONFIG_COMMIT}"
|
|
|
|
curl -fsSL -o ${WORKSPACE}/check-config.sh "https://raw.githubusercontent.com/moby/moby/${CHECK_CONFIG_COMMIT}/contrib/check-config.sh" \
|
|
|
|
&& bash ${WORKSPACE}/check-config.sh || true
|
|
|
|
'''
|
2019-08-02 14:20:22 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
stage("Build dev image") {
|
|
|
|
steps {
|
2019-08-16 19:39:10 -04:00
|
|
|
sh '''
|
|
|
|
make bundles/buildx
|
|
|
|
bundles/buildx build --load --force-rm --build-arg APT_MIRROR -t docker:${GIT_COMMIT} .
|
|
|
|
'''
|
2019-08-02 12:37:58 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-03 13:57:50 -04:00
|
|
|
stage("Unit tests") {
|
|
|
|
steps {
|
2021-05-25 18:06:51 -04:00
|
|
|
sh '''
|
|
|
|
sudo modprobe ip6table_filter
|
|
|
|
'''
|
2019-08-03 13:57:50 -04:00
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
|
|
|
--name docker-pr$BUILD_NUMBER \
|
2019-08-09 12:12:29 -04:00
|
|
|
-e DOCKER_EXPERIMENTAL \
|
2019-08-03 13:57:50 -04:00
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2019-10-03 11:39:08 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-03 13:57:50 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
2021-04-27 18:40:39 -04:00
|
|
|
hack/test/unit
|
2019-08-03 13:57:50 -04:00
|
|
|
'''
|
|
|
|
}
|
2019-08-11 09:15:55 -04:00
|
|
|
post {
|
|
|
|
always {
|
2021-07-02 15:29:04 -04:00
|
|
|
junit testResults: 'bundles/junit-report*.xml', allowEmptyResults: true
|
2019-08-11 09:15:55 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-03 13:57:50 -04:00
|
|
|
}
|
|
|
|
stage("Integration tests") {
|
2019-08-09 19:00:20 -04:00
|
|
|
environment { TEST_SKIP_INTEGRATION_CLI = '1' }
|
2019-08-02 12:37:58 -04:00
|
|
|
steps {
|
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
2019-08-03 13:08:06 -04:00
|
|
|
--name docker-pr$BUILD_NUMBER \
|
2019-08-09 12:12:29 -04:00
|
|
|
-e DOCKER_EXPERIMENTAL \
|
2019-08-03 13:08:06 -04:00
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2019-08-23 15:46:55 -04:00
|
|
|
-e TESTDEBUG \
|
2022-10-17 08:29:05 -04:00
|
|
|
-e TEST_INTEGRATION_USE_SNAPSHOTTER \
|
2019-08-09 19:00:20 -04:00
|
|
|
-e TEST_SKIP_INTEGRATION_CLI \
|
2019-08-08 22:08:21 -04:00
|
|
|
-e TIMEOUT \
|
2019-10-03 11:39:08 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-03 13:08:06 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
2019-08-03 13:57:50 -04:00
|
|
|
hack/make.sh \
|
|
|
|
dynbinary \
|
|
|
|
test-integration
|
2019-08-02 12:37:58 -04:00
|
|
|
'''
|
|
|
|
}
|
2019-08-11 14:32:49 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
junit testResults: 'bundles/**/*-report.xml', allowEmptyResults: true
|
|
|
|
}
|
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
}
|
2019-08-02 11:34:38 -04:00
|
|
|
}
|
2019-08-02 12:37:58 -04:00
|
|
|
|
2019-08-02 11:34:38 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
sh '''
|
|
|
|
echo "Ensuring container killed."
|
2019-08-02 12:47:23 -04:00
|
|
|
docker rm -vf docker-pr$BUILD_NUMBER || true
|
2019-08-02 12:51:51 -04:00
|
|
|
'''
|
|
|
|
|
|
|
|
sh '''
|
2019-08-02 11:34:38 -04:00
|
|
|
echo "Chowning /workspace to jenkins user"
|
2019-08-02 12:49:33 -04:00
|
|
|
docker run --rm -v "$WORKSPACE:/workspace" busybox chown -R "$(id -u):$(id -g)" /workspace
|
2019-08-02 11:34:38 -04:00
|
|
|
'''
|
2019-08-02 12:37:58 -04:00
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
|
|
|
|
sh '''
|
2019-09-10 03:46:19 -04:00
|
|
|
bundleName=ppc64le-integration
|
2019-08-24 08:14:56 -04:00
|
|
|
echo "Creating ${bundleName}-bundles.tar.gz"
|
|
|
|
# exclude overlay2 directories
|
2019-08-11 14:32:49 -04:00
|
|
|
find bundles -path '*/root/*overlay2' -prune -o -type f \\( -name '*-report.json' -o -name '*.log' -o -name '*.prof' -o -name '*-report.xml' \\) -print | xargs tar -czf ${bundleName}-bundles.tar.gz
|
2019-08-24 08:14:56 -04:00
|
|
|
'''
|
2019-08-02 12:41:50 -04:00
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
archiveArtifacts artifacts: '*-bundles.tar.gz', allowEmptyArchive: true
|
|
|
|
}
|
2019-08-02 12:41:50 -04:00
|
|
|
}
|
|
|
|
cleanup {
|
|
|
|
sh 'make clean'
|
2019-08-02 11:34:38 -04:00
|
|
|
deleteDir()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-09-10 03:46:19 -04:00
|
|
|
stage('ppc64le integration-cli') {
|
2019-08-08 21:52:03 -04:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2022-04-06 09:34:38 -04:00
|
|
|
// Skip this stage on PRs unless the checkbox is selected
|
|
|
|
anyOf {
|
|
|
|
not { changeRequest() }
|
|
|
|
expression { params.ppc64le }
|
|
|
|
}
|
2019-08-08 21:52:03 -04:00
|
|
|
}
|
|
|
|
agent { label 'ppc64le-ubuntu-1604' }
|
2019-10-14 13:22:56 -04:00
|
|
|
// ppc64le machines run on Docker 18.06, and buildkit has some
|
|
|
|
// bugs on that version. Build and use buildx instead.
|
|
|
|
environment {
|
|
|
|
USE_BUILDX = '1'
|
|
|
|
DOCKER_BUILDKIT = '0'
|
|
|
|
}
|
2019-08-08 21:52:03 -04:00
|
|
|
|
|
|
|
stages {
|
|
|
|
stage("Print info") {
|
|
|
|
steps {
|
|
|
|
sh 'docker version'
|
|
|
|
sh 'docker info'
|
|
|
|
sh '''
|
|
|
|
echo "check-config.sh version: ${CHECK_CONFIG_COMMIT}"
|
|
|
|
curl -fsSL -o ${WORKSPACE}/check-config.sh "https://raw.githubusercontent.com/moby/moby/${CHECK_CONFIG_COMMIT}/contrib/check-config.sh" \
|
|
|
|
&& bash ${WORKSPACE}/check-config.sh || true
|
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Build dev image") {
|
|
|
|
steps {
|
2019-08-16 19:39:10 -04:00
|
|
|
sh '''
|
|
|
|
make bundles/buildx
|
|
|
|
bundles/buildx build --load --force-rm --build-arg APT_MIRROR -t docker:${GIT_COMMIT} .
|
|
|
|
'''
|
2019-08-08 21:52:03 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Integration-cli tests") {
|
2019-08-09 19:00:20 -04:00
|
|
|
environment { TEST_SKIP_INTEGRATION = '1' }
|
2019-08-08 21:52:03 -04:00
|
|
|
steps {
|
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
|
|
|
--name docker-pr$BUILD_NUMBER \
|
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2022-10-17 08:29:05 -04:00
|
|
|
-e TEST_INTEGRATION_USE_SNAPSHOTTER \
|
2019-08-09 19:00:20 -04:00
|
|
|
-e TEST_SKIP_INTEGRATION \
|
2019-08-08 22:08:21 -04:00
|
|
|
-e TIMEOUT \
|
2019-10-03 11:39:08 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-08 21:52:03 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
|
|
|
hack/make.sh \
|
|
|
|
dynbinary \
|
|
|
|
test-integration
|
|
|
|
'''
|
|
|
|
}
|
2019-08-11 14:32:49 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
junit testResults: 'bundles/**/*-report.xml', allowEmptyResults: true
|
|
|
|
}
|
|
|
|
}
|
2019-08-08 21:52:03 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
post {
|
|
|
|
always {
|
|
|
|
sh '''
|
|
|
|
echo "Ensuring container killed."
|
|
|
|
docker rm -vf docker-pr$BUILD_NUMBER || true
|
|
|
|
'''
|
|
|
|
|
|
|
|
sh '''
|
|
|
|
echo "Chowning /workspace to jenkins user"
|
|
|
|
docker run --rm -v "$WORKSPACE:/workspace" busybox chown -R "$(id -u):$(id -g)" /workspace
|
|
|
|
'''
|
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
|
|
|
|
sh '''
|
2019-09-10 03:46:19 -04:00
|
|
|
bundleName=ppc64le-integration-cli
|
2019-08-24 08:14:56 -04:00
|
|
|
echo "Creating ${bundleName}-bundles.tar.gz"
|
|
|
|
# exclude overlay2 directories
|
2019-08-11 14:32:49 -04:00
|
|
|
find bundles -path '*/root/*overlay2' -prune -o -type f \\( -name '*-report.json' -o -name '*.log' -o -name '*.prof' -o -name '*-report.xml' \\) -print | xargs tar -czf ${bundleName}-bundles.tar.gz
|
2019-08-24 08:14:56 -04:00
|
|
|
'''
|
2019-08-08 21:52:03 -04:00
|
|
|
|
2019-08-24 08:14:56 -04:00
|
|
|
archiveArtifacts artifacts: '*-bundles.tar.gz', allowEmptyArchive: true
|
|
|
|
}
|
2019-08-08 21:52:03 -04:00
|
|
|
}
|
|
|
|
cleanup {
|
|
|
|
sh 'make clean'
|
|
|
|
deleteDir()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-08-06 17:52:14 -04:00
|
|
|
stage('arm64') {
|
2019-08-06 06:23:12 -04:00
|
|
|
when {
|
|
|
|
beforeAgent true
|
2019-08-06 17:52:14 -04:00
|
|
|
expression { params.arm64 }
|
2019-08-06 06:23:12 -04:00
|
|
|
}
|
2021-03-30 06:20:40 -04:00
|
|
|
agent { label 'arm64 && ubuntu-2004' }
|
2019-08-06 06:33:43 -04:00
|
|
|
environment {
|
|
|
|
TEST_SKIP_INTEGRATION_CLI = '1'
|
|
|
|
}
|
|
|
|
|
2019-08-06 06:35:33 -04:00
|
|
|
stages {
|
|
|
|
stage("Print info") {
|
|
|
|
steps {
|
|
|
|
sh 'docker version'
|
|
|
|
sh 'docker info'
|
|
|
|
sh '''
|
|
|
|
echo "check-config.sh version: ${CHECK_CONFIG_COMMIT}"
|
|
|
|
curl -fsSL -o ${WORKSPACE}/check-config.sh "https://raw.githubusercontent.com/moby/moby/${CHECK_CONFIG_COMMIT}/contrib/check-config.sh" \
|
|
|
|
&& bash ${WORKSPACE}/check-config.sh || true
|
|
|
|
'''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Build dev image") {
|
|
|
|
steps {
|
2019-08-14 19:11:21 -04:00
|
|
|
sh 'docker build --force-rm --build-arg APT_MIRROR -t docker:${GIT_COMMIT} .'
|
2019-08-06 06:35:33 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
stage("Unit tests") {
|
|
|
|
steps {
|
2021-05-25 18:06:51 -04:00
|
|
|
sh '''
|
|
|
|
sudo modprobe ip6table_filter
|
|
|
|
'''
|
2019-08-06 06:35:33 -04:00
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
|
|
|
--name docker-pr$BUILD_NUMBER \
|
2019-08-14 19:11:21 -04:00
|
|
|
-e DOCKER_EXPERIMENTAL \
|
2019-08-06 06:35:33 -04:00
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2019-08-14 19:11:21 -04:00
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-06 06:35:33 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
2021-04-27 18:40:39 -04:00
|
|
|
hack/test/unit
|
2019-08-06 06:35:33 -04:00
|
|
|
'''
|
|
|
|
}
|
2019-08-14 19:11:21 -04:00
|
|
|
post {
|
|
|
|
always {
|
2021-07-02 15:29:04 -04:00
|
|
|
junit testResults: 'bundles/junit-report*.xml', allowEmptyResults: true
|
2019-08-14 19:11:21 -04:00
|
|
|
}
|
|
|
|
}
|
2019-08-06 06:35:33 -04:00
|
|
|
}
|
|
|
|
stage("Integration tests") {
|
2019-08-14 19:11:21 -04:00
|
|
|
environment { TEST_SKIP_INTEGRATION_CLI = '1' }
|
2019-08-06 06:35:33 -04:00
|
|
|
steps {
|
|
|
|
sh '''
|
|
|
|
docker run --rm -t --privileged \
|
|
|
|
-v "$WORKSPACE/bundles:/go/src/github.com/docker/docker/bundles" \
|
|
|
|
--name docker-pr$BUILD_NUMBER \
|
2019-08-14 19:11:21 -04:00
|
|
|
-e DOCKER_EXPERIMENTAL \
|
2019-08-06 06:35:33 -04:00
|
|
|
-e DOCKER_GITCOMMIT=${GIT_COMMIT} \
|
|
|
|
-e DOCKER_GRAPHDRIVER \
|
2019-08-14 19:11:21 -04:00
|
|
|
-e TESTDEBUG \
|
2022-10-17 08:29:05 -04:00
|
|
|
-e TEST_INTEGRATION_USE_SNAPSHOTTER \
|
2019-08-06 06:35:33 -04:00
|
|
|
-e TEST_SKIP_INTEGRATION_CLI \
|
2019-08-14 19:11:21 -04:00
|
|
|
-e TIMEOUT \
|
|
|
|
-e VALIDATE_REPO=${GIT_URL} \
|
|
|
|
-e VALIDATE_BRANCH=${CHANGE_TARGET} \
|
2019-08-06 06:35:33 -04:00
|
|
|
docker:${GIT_COMMIT} \
|
|
|
|
hack/make.sh \
|
|
|
|
dynbinary \
|
|
|
|
test-integration
|
|
|
|
'''
|
|
|
|
}
|
2019-08-14 19:11:21 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
junit testResults: 'bundles/**/*-report.xml', allowEmptyResults: true
|
|
|
|
}
|
|
|
|
}
|
2019-08-06 06:35:33 -04:00
|
|
|
}
|
2019-08-06 06:23:12 -04:00
|
|
|
}
|
2019-08-14 19:11:21 -04:00
|
|
|
|
2019-08-06 06:23:12 -04:00
|
|
|
post {
|
|
|
|
always {
|
|
|
|
sh '''
|
|
|
|
echo "Ensuring container killed."
|
2019-08-06 06:33:43 -04:00
|
|
|
docker rm -vf docker-pr$BUILD_NUMBER || true
|
|
|
|
'''
|
2019-08-06 06:23:12 -04:00
|
|
|
|
2019-08-06 06:33:43 -04:00
|
|
|
sh '''
|
2019-08-06 06:23:12 -04:00
|
|
|
echo "Chowning /workspace to jenkins user"
|
2019-08-06 06:33:43 -04:00
|
|
|
docker run --rm -v "$WORKSPACE:/workspace" busybox chown -R "$(id -u):$(id -g)" /workspace
|
2019-08-06 06:23:12 -04:00
|
|
|
'''
|
2019-08-06 06:33:43 -04:00
|
|
|
|
2019-08-14 19:11:21 -04:00
|
|
|
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
|
|
|
|
sh '''
|
|
|
|
bundleName=arm64-integration
|
|
|
|
echo "Creating ${bundleName}-bundles.tar.gz"
|
|
|
|
# exclude overlay2 directories
|
|
|
|
find bundles -path '*/root/*overlay2' -prune -o -type f \\( -name '*-report.json' -o -name '*.log' -o -name '*.prof' -o -name '*-report.xml' \\) -print | xargs tar -czf ${bundleName}-bundles.tar.gz
|
|
|
|
'''
|
2019-08-06 06:33:43 -04:00
|
|
|
|
2019-08-14 19:11:21 -04:00
|
|
|
archiveArtifacts artifacts: '*-bundles.tar.gz', allowEmptyArchive: true
|
|
|
|
}
|
2019-08-06 06:23:12 -04:00
|
|
|
}
|
2019-08-06 06:35:33 -04:00
|
|
|
cleanup {
|
|
|
|
sh 'make clean'
|
|
|
|
deleteDir()
|
|
|
|
}
|
2019-08-06 06:23:12 -04:00
|
|
|
}
|
|
|
|
}
|
2019-01-10 15:08:10 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-07-24 21:25:16 -04:00
|
|
|
}
|