forked from openenclave/openenclave
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update Linux Docker container builds
Signed-off-by: Chris Yan <[email protected]>
- Loading branch information
Showing
2 changed files
with
74 additions
and
50 deletions.
There are no files selected for viewing
113 changes: 73 additions & 40 deletions
113
.jenkins/infrastructure/docker/build_linux_docker_images.Jenkinsfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,94 @@ | ||
// Copyright (c) Open Enclave SDK contributors. | ||
// Licensed under the MIT License. | ||
|
||
OECI_LIB_VERSION = env.OECI_LIB_VERSION ?: "master" | ||
oe = library("OpenEnclaveCommon@${OECI_LIB_VERSION}").jenkins.common.Openenclave.new() | ||
library "OpenEnclaveJenkinsLibrary@${params.OECI_LIB_VERSION}" | ||
|
||
AGENTS_LABEL = params.AGENTS_LABEL | ||
TIMEOUT_MINUTES = params.TIMEOUT_MINUTES ?: 240 | ||
|
||
INTERNAL_REPO = params.INTERNAL_REPO ?: "https://oejenkinscidockerregistry.azurecr.io" | ||
INTERNAL_REPO_CREDS = params.INTERNAL_REPO_CREDS ?: "oejenkinscidockerregistry" | ||
DOCKERHUB_REPO_CREDS = params.DOCKERHUB_REPO_CREDS ?: "oeciteamdockerhub" | ||
LINUX_DOCKERFILE = ".jenkins/infrastructure/docker/dockerfiles/linux/Dockerfile" | ||
|
||
def buildLinuxDockerContainers() { | ||
node(AGENTS_LABEL) { | ||
timeout(TIMEOUT_MINUTES) { | ||
stage("Checkout") { | ||
pipeline { | ||
agent { | ||
label globalvars.AGENTS_LABELS["ubuntu-nonsgx"] | ||
} | ||
options { | ||
timeout(time: 240, unit: 'MINUTES') | ||
} | ||
parameters { | ||
string(name: "REPOSITORY_NAME", defaultValue: "openenclave/openenclave", description: "GitHub repository to checkout") | ||
string(name: "BRANCH_NAME", defaultValue: "master", description: "The branch used to checkout the repository") | ||
string(name: "DOCKER_TAG", defaultValue: "standalone-linux-build", description: "The tag for the new Docker images") | ||
string(name: "INTERNAL_REPO", defaultValue: "https://oejenkinscidockerregistry.azurecr.io", description: "Url for internal Docker repository") | ||
string(name: "OECI_LIB_VERSION", defaultValue: 'master', description: 'Version of OE Libraries to use') | ||
booleanParam(name: "PUBLISH_DOCKER_HUB", defaultValue: false, description: "Publish container to OECITeam Docker Hub?") | ||
booleanParam(name: "TAG_LATEST", defaultValue: false, description: "Update the latest tag to the currently built DOCKER_TAG") | ||
} | ||
environment { | ||
INTERNAL_REPO_CREDS = 'oejenkinscidockerregistry' | ||
DOCKERHUB_REPO_CREDS = 'oeciteamdockerhub' | ||
LINUX_DOCKERFILE = ".jenkins/infrastructure/docker/dockerfiles/linux/Dockerfile" | ||
} | ||
stages { | ||
stage("Checkout") { | ||
steps { | ||
cleanWs() | ||
checkout scm | ||
checkout([$class: 'GitSCM', | ||
branches: [[name: BRANCH_NAME]], | ||
extensions: [], | ||
userRemoteConfigs: [[url: "https://github.com/${params.REPOSITORY_NAME}"]]]) | ||
} | ||
String buildArgs = oe.dockerBuildArgs("UID=\$(id -u)", "UNAME=\$(id -un)", | ||
"GID=\$(id -g)", "GNAME=\$(id -gn)") | ||
parallel "Build Ubuntu 18.04 Docker Image": { | ||
} | ||
stage("Build") { | ||
parallel { | ||
stage("Build Ubuntu 18.04 Docker Image") { | ||
oe1804 = oe.dockerImage("oetools-18.04:${DOCKER_TAG}", LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=18.04 --build-arg devkits_uri=${DEVKITS_URI}") | ||
puboe1804 = oe.dockerImage("oeciteam/oetools-18.04:${DOCKER_TAG}", LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=18.04 --build-arg devkits_uri=${DEVKITS_URI}") | ||
steps { | ||
script { | ||
docker.withRegistry(params.INTERNAL_REPO, env.INTERNAL_REPO_CREDS) { | ||
buildArgs = common.dockerBuildArgs("UID=\$(id -u)", "UNAME=\$(id -un)", | ||
"GID=\$(id -g)", "GNAME=\$(id -gn)") | ||
oe1804 = common.dockerImage("oetools-18.04:${params.DOCKER_TAG}", env.LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=18.04") | ||
puboe1804 = common.dockerImage("oeciteam/oetools-18.04:${params.DOCKER_TAG}", env.LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=18.04") | ||
} | ||
} | ||
} | ||
} | ||
}, "Build Ubuntu 20.04 Docker Image": { | ||
stage("Build Ubuntu 20.04 Docker Image") { | ||
oe2004 = oe.dockerImage("oetools-20.04:${DOCKER_TAG}",LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=20.04 --build-arg devkits_uri=${DEVKITS_URI}") | ||
puboe2004 = oe.dockerImage("oeciteam/oetools-20.04:${DOCKER_TAG}", LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=20.04 --build-arg devkits_uri=${DEVKITS_URI}") | ||
steps { | ||
script { | ||
buildArgs = common.dockerBuildArgs("UID=\$(id -u)", "UNAME=\$(id -un)", | ||
"GID=\$(id -g)", "GNAME=\$(id -gn)") | ||
oe2004 = common.dockerImage("oetools-20.04:${params.DOCKER_TAG}", env.LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=20.04") | ||
puboe2004 = common.dockerImage("oeciteam/oetools-20.04:${params.DOCKER_TAG}", env.LINUX_DOCKERFILE, "${buildArgs} --build-arg ubuntu_version=20.04") | ||
} | ||
} | ||
} | ||
} | ||
stage("Push to OE Docker Registry") { | ||
docker.withRegistry(INTERNAL_REPO, INTERNAL_REPO_CREDS) { | ||
oe.exec_with_retry { oe1804.push() } | ||
oe.exec_with_retry { oe2004.push() } | ||
if(TAG_LATEST == "true") { | ||
oe.exec_with_retry { oe1804.push('latest') } | ||
oe.exec_with_retry { oe2004.push('latest') } | ||
} | ||
stage("Push to OE Docker Registry") { | ||
steps { | ||
script { | ||
docker.withRegistry(params.INTERNAL_REPO, env.INTERNAL_REPO_CREDS) { | ||
common.exec_with_retry { oe1804.push() } | ||
common.exec_with_retry { oe2004.push() } | ||
if(params.TAG_LATEST == "true") { | ||
common.exec_with_retry { oe1804.push('latest') } | ||
common.exec_with_retry { oe2004.push('latest') } | ||
} | ||
} | ||
} | ||
} | ||
stage("Push to OE Docker Hub Registry") { | ||
docker.withRegistry('', DOCKERHUB_REPO_CREDS) { | ||
if(PUBLISH_DOCKER_HUB == "true") { | ||
oe.exec_with_retry { puboe1804.push() } | ||
oe.exec_with_retry { puboe2004.push() } | ||
if(TAG_LATEST == "true") { | ||
oe.exec_with_retry { puboe1804.push('latest') } | ||
oe.exec_with_retry { puboe2004.push('latest') } | ||
} | ||
stage("Push to OE Docker Hub Registry") { | ||
steps { | ||
script { | ||
docker.withRegistry('', env.DOCKERHUB_REPO_CREDS) { | ||
if(params.PUBLISH_DOCKER_HUB == "true") { | ||
common.exec_with_retry { puboe1804.push() } | ||
common.exec_with_retry { puboe2004.push() } | ||
if(params.TAG_LATEST == "true") { | ||
common.exec_with_retry { puboe1804.push('latest') } | ||
common.exec_with_retry { puboe2004.push('latest') } | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
|
||
buildLinuxDockerContainers() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters