Декларативный трубопровод Дженкинса - PullRequest
0 голосов
/ 12 марта 2019

Я использую декларативный конвейер Jenkins.Я новичок в Дженкинс, поэтому я ничего не понимаю.Я не знаю, как справиться с этой ошибкой, и может кто-нибудь сказать мне, какие варианты лучше всего строить.

У меня есть скрипт bash, который собирает, маркирует и отправляет образ докера в репозиторий.Это часть моего Jenkinsfile:

pipeline {
  agent {
    kubernetes {
      label 'bmf-worker'
      defaultContainer 'jnlp'
      yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
  component: ci
spec:
  # Use service account that can deploy to all namespaces
  serviceAccountName: service-reader
  containers:
  - name: docker
    image: docker
    command:
    - cat
    tty: true
  - name: kubectl
    image: gcr.io/cloud-builders/kubectl
    command:
    - cat
    tty: true
  - name: gcloud 
    image: google/cloud-sdk
    command: 
    - cat
    tty: true
"""
}
  }
  stages {
    stage('Code Checkout and Setup') {
      steps {
        echo 'Code Checkout and Setup'


      }
    }
    stage('Build') {
      parallel { 
        stage('Build') {
          steps {
            echo 'Start building Frontend and Backend Docker images'
          }
        }
        stage('Build BMF Frontend') {
          steps {
            container('gcloud') {
            echo 'Building Bmf Frontend Image'
            sh 'chmod +x build.sh'
            sh './build.sh --build_bmf_frontend'
          }
          }
        }
        stage('Tag BMF Frontend') {
          steps {
            container('gcloud') {
            echo 'Building Bmf Frontend Image'
            sh 'chmod +x build.sh'
            sh './build.sh --tag_frontend'
          }
          }
        }
        stage('Build BMF Backend') {
          steps {
            container('gcloud') {
            echo 'Buildinging Bmf Backend Images'
            sh 'chmod +x build.sh'
            sh './build.sh --build_bmf_backend'
          }
          }
        }
        stage('Tag BMF Backend') {
          steps {
            container('gcloud') {
            echo 'Building Bmf Frontend Image'
            sh 'chmod +x build.sh'
            sh './build.sh --tag_frontend'
          }
          }
        }
      }
    }

Как использовать podTemplate для выполнения моих шагов.Когда я использую Docker-контейнер для Stage Build BMF Backend У меня есть эти ошибки;

  1. Невозможно подключиться к демону Docker в unix: ///var/run/docker.sock.Работает ли демон Docker?
  2. /home/jenkins/workspace/BMF/bmf-web@tmp/durable-c146e810/script.sh: строка 1: ./build.sh: не найдена

С контейнером gcloud, определенным в podTemplate;

  1. time = "2019-03-12T13: 40: 56Z" level = error msg = "Не удалось набрать gRPC: невозможно подключитьсяк демону Docker. Работает ли на этом хосте демон docker ?: наберите unix /var/run/docker.sock: connect: нет такого файла или каталога "

  2. Не удается подключиться кдемон Docker в unix: ///var/run/docker.sock.Работает ли демон docker?

И как пометить изображения докера, потому что мне нужен docker для тегов и мерзавцев, потому что теги - это короткий коммит.Когда я использую докер, нет мерзавца.

Мой мастер Дженкинс в Google Cloud Kubernetes.

Может кто-нибудь объяснить мне лучшее решение для выполнения заданий.

1 Ответ

0 голосов
/ 12 марта 2019

Первая проблема, с которой вы столкнулись, связана с Docker, а не с Jenkins.

Команды Docker могут запускаться только пользователем root или пользователями из группы docker.

Если выЕсли пользователь Jenkins сможет выполнять команды Docker, можно добавить следующую команду в качестве пользователя root, чтобы добавить Jenkins в группу Docker:

usermod -aG docker jenkins

Это описано вДокументация Docker .

Имейте в виду, что предоставление пользователю доступа к Docker фактически предоставляет им root-доступ, поэтому будьте осторожны с тем, каких пользователей вы добавляете в эту группу.

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