Commit e167adc6 authored by William Petit's avatar William Petit

Proper Docker images versioning

parent 8eb049c0
Pipeline #277 passed with stage
in 0 seconds
pipeline {
// Import de la librairie Zéphir
// Voir le projet https://gitlab.mim.ovh/EOLE/Zephir/jenkins
@Library('zephir') _
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-api-bridge"
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
// Exécution du pipeline de construction des images
serviceImagePipeline("zephir-api-bridge")
\ No newline at end of file
FROM docker:stable
RUN apk add --no-cache git
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