Une coupure du gitlab et des services associés est prévue en tout début de matinée ce vendredi 19 août 2022 et ne devrait pas durer plus de 30 minutes.

Commit be3e0e4d authored by Philippe Caseiro's avatar Philippe Caseiro
Browse files

Merge branch 'feature/jenkins-ci' into 'develop'

Build and publish image with Jenkins

See merge request !4
parents f82961d7 b3d54b1e
Pipeline #234 passed with stage
in 0 seconds
pipeline {
agent {
dockerfile {
filename 'Dockerfile'
dir 'ci'
args '--privileged -v /var/run/docker.sock:/var/run/docker.sock'
}
}
triggers {
gitlab(
triggerOnPush: true,
triggerOnMergeRequest: true,
branchFilterType: 'All',
cancelPendingBuildsOnUpdate: false
)
}
options {
gitLabConnection('Gitlab MIM')
gitlabBuilds(builds: [])
}
parameters {
string(defaultValue: "develop", description: 'Branche "staging"', name: 'stagingBranch')
string(defaultValue: "master", description: 'Branche "stable"', name: 'stableBranch')
}
environment {
IMAGE_NAME = "zephir-keycloak"
IMAGE_COMMIT_TAG = env.GIT_COMMIT.substring(0,8)
}
stages {
stage('Build image') {
steps {
gitlabStage(STAGE_NAME) {
withDockerHubCredentials {
sh """
# Construction de l'image
docker build -t '${DOCKER_USERNAME}/${IMAGE_NAME}' .
# Ajout du tag de commit
docker tag '${DOCKER_USERNAME}/${IMAGE_NAME}:latest' '${DOCKER_USERNAME}/${IMAGE_NAME}:${IMAGE_COMMIT_TAG}'
"""
}
}
}
}
stage('Publish staging image') {
when {
branch params.stagingBranch
}
steps {
gitlabStage(STAGE_NAME) {
addTagAndPublishDockerImage(
env.IMAGE_COMMIT_TAG,
"staging-latest"
)
}
}
}
stage('Publish stable image') {
when {
branch params.stableBranch
}
steps {
gitlabStage(STAGE_NAME) {
addTagAndPublishDockerImage(
env.IMAGE_COMMIT_TAG,
"stable-latest"
)
}
}
}
}
}
def gitlabStage(String stageName, Closure fn) {
gitlabBuilds(builds: [stageName]) {
gitlabCommitStatus(stageName) {
fn()
}
}
}
def withDockerHubCredentials(Closure fn) {
withCredentials([
usernamePassword(credentialsId: 'dockerhub', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]
){
fn()
}
}
def addTagAndPublishDockerImage(String originalTag, String newTag) {
withDockerHubCredentials {
sh """
# Ajout du nouveau tag
docker tag '${DOCKER_USERNAME}/${IMAGE_NAME}:${originalTag}' '${DOCKER_USERNAME}/${IMAGE_NAME}:${newTag}'
# Publication de l'image sur le DockerHub
echo "${DOCKER_PASSWORD}" | docker login --username '${DOCKER_USERNAME}' --password-stdin
docker push '${DOCKER_USERNAME}/${IMAGE_NAME}:${newTag}'
docker push '${DOCKER_USERNAME}/${IMAGE_NAME}:${originalTag}'
docker logout
"""
}
}
\ No newline at end of file
FROM docker:stable
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment