Использование Jenkins Для Управления Процессом Сборки Образа Docker

  • Автор темы SuperTest
  • Обновлено
  • 22, Oct 2024
  • #1

Я пытаюсь найти правильный способ включить среду сборки в конвейер CI.

Чего я хочу достичь:

  1. кто-то отправляет в репозиторий исходного кода докера (не в реестр, а в репозиторий с папкой докера)
  2. Дженкинс начинает сборку этого образа докера
  3. в случае успеха докер затем запускает сборку программного обеспечения, используя только что созданный образ докера.
  4. в случае успеха образ докера помечается и помещается в реестр докера.

Все, что у меня есть на данный момент, это файл Jenkins, состоящий из четырех этапов.

  1. проверяет репозиторий исходного кода Docker
  2. создает образ докера из исходного кода
  3. Проверяет исходный код программного обеспечения (код, который создается в среде докера)
  4. собирает исходный код программного обеспечения в контейнере докеров
  5. В случае успеха помечает и отправляет новое изображение в реестр докеров.

Меня больше всего беспокоит то, что все, что я делаю, будет в блоках «script», за исключением проверок git, и мне кажется очень хакерским создавать и запускать сборки докеров с помощью jenkins с использованием bash...

существуют ли какие-либо инструменты/уже определенные процедуры для подобных вещей? Это лучший способ сделать это? Я ищу лучший практический подход, поскольку он будет запущен в производство, и я хочу, чтобы он был максимально устойчивым и долговечным.

#docker #jenkins #jenkins-pipeline #docker-compose

SuperTest


Рег
22 Jun, 2009

Тем
71

Постов
188

Баллов
573
  • 25, Oct 2024
  • #2

Я нашел решение, поэтому оставлю его здесь для других.

использование докера

 #!/usr/bin/env groovy

pipeline{
agent buildsvr

stages{

stage('Checkout and build Docker Source'){

steps{

checkout([

$class: 'GitSCM',

branches: [[name: '*/master']],

doGenerateSubmoduleConfigurations: false,

submoduleCfg: [],

userRemoteConfigs: [[

credentialsId: 'asdf787c-5fd4-4dfb-81ad-873jhf107223',

url: 
'[email protected]']]])

sh 'pushd docker && docker build -t ${image}:latest . && popd '

}

}

stage('Checkout Target Source'){

steps{

script{

checkout([

$class: 'GitSCM',

branches: [[name: 'mybranch']],

doGenerateSubmoduleConfigurations: false,

extensions: [[

$class: 'SubmoduleOption',

disableSubmodules: false,

parentCredentials: false,

recursiveSubmodules: true, reference: '',

trackingSubmodules: true

relativeTargetDir: 'source']],

submoduleCfg: [],

userRemoteConfigs: [[

credentialsId: 'Bitbucket-Jenkins',

url: 'ssh://[email protected]']]])

}

}

}

stage('Build Source Target'){

steps{

script{

sh 'docker-compose up'

}

}

}

}

post{

success{

script{

sh 'docker tag ${image} 10.90.239.223:5000:/${image} && docker push 
10.90.239.223:5000:/${image}'

}

}

}
}
 
 

PRO Manager


Рег
24 Oct, 2020

Тем
81

Постов
206

Баллов
651
Похожие темы Дата
Похожие темы
Jenkins — Безопасное Развертывание Локальных Артефактов В Облаке
Kubernetes — Как Мне Справиться С «Исправлением» Контейнера В Строгом Процессе Выпуска?
Как Устранить Мою Ошибку При Сохранении Глобальной Конфигурации Перед Ее Загрузкой В ​​Jenkins?
Docker – Как Правильно Установить Curl Вместе С --No-Install-Recommends В Debian?
Веб-Службы Amazon – Всегда Выполнять Оператор Post В Конвейере Jenkins При Выполнении Условного Оператора
Веб-Сервисы Amazon. Как Поддержать Выпуск Новых Версий Кода, Работающих Параллельно С Последней Стабильной Версией?
Межрегиональная Репликация Данных Контейнера Redis Docker
Linux - Docker Swarm Init Привел К Повреждению Докера
Развертывание - Преимущества Jaeger Agent
Непрерывная Интеграция — Запуск Нисходящего Конвейера Gitlab Из Восходящего Конвейера В Мультипроекте С Использованием Триггера, Правил И Пользовательских Переменных Конфигурации.
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно