Как сделать тегирование Git & Docker из многоотраслевого конвейера Jenkins - PullRequest
1 голос
/ 02 апреля 2019

У меня есть Jenkinsfile (многоотраслевой конвейер), который должен запускаться каждый раз, когда кто-то фиксирует какую-либо ветку в любой ветке в Jenkins.

Моя идея состоит в том, что он запускает сборку и каждый раз, когда тесты проходят, он помечает образ хранилища git и образ докера новым тегом.

В настоящее время каждая сборка создает образ Docker под названием application: latest. Было бы неплохо внедрить некоторую систему тегов в репозиторий Git и в образы Docker.

Так что у моего репозитория Github есть 0.0.1, 0.0.2, 0.0.3 в качестве тегов. И что образ Docker также выдвигается как приложение: 0.0.1 к концентратору Docker. Кроме того, последняя теговая сборка должна называться не только application: 0.0.3, но также application: latest.

Есть идеи, как я могу реализовать такую ​​систему с помощью Jenkins в Github?

Это мой текущий Jenkinsfile:

pipeline {
  agent any
  options {
    buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '10'))
  }
  environment {
    DOCKER_CREDS = credentials('dockeruser-dockerhub-password')
  }
  stages {
    stage('Git clone') {
      /*
      This is needed for local development, because Jenkins uses locally pasted pipeline code in a textarea box and doesn't know where the Git repo is.
      This also means we have no multibranch, but that's no problem for local development.
      */
      steps {
        git url: 'https://github.com/gituser/denpal', branch: 'feature/Jenkinsfile'
      }
    }
    stage('Docker login') {
      steps {
        sh """
        docker login --username dockeruser --password $DOCKER_CREDS
        """
      }
    }
    stage('Docker-compose') {
      steps {
        sh '''
        docker-compose config -q
        COMPOSE_PROJECT_NAME=denpal docker-compose down
        COMPOSE_PROJECT_NAME=denpal docker-compose up -d --build "$@"
        '''
      }
    }
    stage('Docker push images') {
      steps {
        sh """
        docker tag denpal:latest dockername/denpal:latest
        docker push dockername/denpal:latest
        docker tag denpal_nginx:latest dockername/denpal_nginx:latest
        docker push dockername/denpal_nginx:latest
        docker tag denpal_php:latest dockername/denpal_php:latest
        docker push dockername/denpal_php:latest
        """
      }
    }
    stage('Verification tests') {
      steps {
        sh """
        docker-compose exec -T cli drush status
        """
        /*
        make this work, syntax error, """-issue?
        if [ $? -eq 0 ]; then
          echo "OK!"
        else
          echo "FAIL"
        fi
        */
      }
    }
  }
}

1 Ответ

0 голосов
/ 02 апреля 2019

вы используете maven или gradle? потому что у меня была та же проблема, и я исправил версию uppgrad, добавив скрипт, который генерирует файл dockerfile из шаблона. вы можете проверить мой проект на github на отличный скрипт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...