ksieren 3 лет назад
Родитель
Сommit
5df50516dc
2 измененных файлов с 106 добавлено и 0 удалено
  1. 8 0
      Dockerfile
  2. 98 0
      Jenkinsfile

+ 8 - 0
Dockerfile

@@ -0,0 +1,8 @@
+FROM kerstinsieren/alpine-phpfpm-nginx-baseimage:staging-latest
+ENV TZ=Europe/Berlin
+COPY . .
+ONBUILD COPY composer.* ./
+USER root
+RUN composer install --no-interaction --prefer-dist --optimize-autoloader --ignore-platform-reqs
+RUN chown -R nobody:nobody /var/www/html
+USER nobody

+ 98 - 0
Jenkinsfile

@@ -0,0 +1,98 @@
+def normalizedBranchName = "${BRANCH_NAME}".replaceAll('/','-').replaceAll('%2F','-').replaceAll('_','-').toLowerCase()
+def imageTag = "${normalizedBranchName}-${env.BUILD_ID}"
+def imageBuildId = "${env.BUILD_ID}"
+def dockerDeployWriteRegistry = "https://index.docker.io/v1/"
+def project = "abitypo3cms"
+def gitRepoEmail = "k.sieren@meramo.de"
+def imageNameWithTag = "kerstinsieren/abitypo3cms:${imageTag}"
+def imageNameTagLatest = "kerstinsieren/abitypo3cms:${normalizedBranchName}-latest"
+def helmGitRepo = "git2.meramo.org/helm_charts/abi-typo3-chart.git"
+
+
+pipeline {
+    agent {
+      kubernetes  {
+            label 'jenkins-slave'
+             defaultContainer 'jnlp'
+      yaml """
+apiVersion: v1
+kind: Pod
+spec:
+  containers:
+  - name: docker
+    image: docker:1.11
+    command:
+    - cat
+    tty: true
+    volumeMounts:
+        - name: dockersock
+          mountPath: /var/run/docker.sock
+  - name: tools
+    image: argoproj/argo-cd-ci-builder:v1.0.0
+    command:
+    - cat
+    tty: true
+  volumes:
+    - name: dockersock
+      hostPath:
+        path: /var/run/docker.sock
+"""
+        }
+    }
+  environment {
+      IMAGE_REPO = "${imageNameWithTag}"
+  }
+  stages {
+    stage('Build') {
+      environment {
+        DOCKERHUB_CREDS = credentials('deploy-docker-id')
+      }
+      steps {
+        container('docker') {
+          sh "echo ${env.GIT_COMMIT}"
+          sh "docker build --no-cache -t ${imageNameWithTag} . && docker tag ${imageNameWithTag} ${imageNameTagLatest}"
+          sh "docker login --username $DOCKERHUB_CREDS_USR --password $DOCKERHUB_CREDS_PSW && docker push ${imageNameWithTag} && docker push ${imageNameTagLatest}"
+          sh "docker run --rm --entrypoint tar ${imageNameWithTag} cCj /var/www . > ${project}-${imageTag}.tar.bz2"
+          archiveArtifacts "${project}-${imageTag}.tar.bz2"
+          stash "${project}-${imageTag}.tar.bz2"
+          sh "rm ${project}-${imageTag}.tar.bz2"
+        }
+      }
+    }
+    stage('Update Helm Chart') {
+      environment {
+        GIT_CREDS = credentials('deploy-git-id')
+        HELM_GIT_REPO_URL = "${helmGitRepo}"
+        GIT_REPO_EMAIL = "${gitRepoEmail}"
+        GIT_REPO_BRANCH = "${normalizedBranchName}"
+      }
+      steps {
+        container('tools') {
+            sh "git clone https://${env.HELM_GIT_REPO_URL}"
+            sh "git config --global user.email ${env.GIT_REPO_EMAIL}"
+            sh "git config --global user.name ${env.GIT_CREDS_USR}"
+            sh "wget https://github.com/mikefarah/yq/releases/download/v4.9.6/yq_linux_amd64.tar.gz"
+            sh "tar xvf yq_linux_amd64.tar.gz"
+            sh "mv yq_linux_amd64 /usr/bin/yq"
+          dir("abi-typo3-chart") {
+          withCredentials([gitUsernamePassword(credentialsId: 'deploy-git-id', gitToolName: 'git-tool')]) {
+              sh "git checkout -b ${normalizedBranchName}"
+              sh '''#!/bin/bash
+              echo $GIT_REPO_EMAIL
+              echo $GIT_COMMIT
+              ls -lth
+              yq eval '.image.repository = env(IMAGE_REPO)' -i values.yaml
+              yq eval '.image.tag = env(GIT_COMMIT)' -i values.yaml
+              cat values.yaml
+              pwd
+              git add values.yaml
+              git commit -m "Triggered Build '$GIT_COMMIT'"
+              git push https://$HELM_GIT_REPO_URL --force
+            '''
+            }
+          }
+        }
+      }
+    }
+  }
+}