Настройка заданий конвейера Jenkins для развертывания образа Django на dockerhub

Это второе руководство из цикла «Развертывание приложения Django на экземпляре AWS EC2 с помощью сервера Jenkins».

В этой статье мы рассмотрим, как дать нашему Jenkins разрешение на выполнение команд docker и настроить базовое конвейерное задание, которое развернет нашу сборку Django docker на dockerhub.

1. Предоставьте пользователю jenkins доступ к выполнению команд docker.

Выполните вход в наш дроплэт с помощью команд

ssh root@YOUR-IP

Войти в полноэкранный режим Выйти из полноэкранного режима

Получите идентификатор контейнера jenkins с помощью команд.

 docker ps

Войти в полноэкранный режим Выйти из полноэкранного режима

Вы должны увидеть результат, подобный приведенному ниже.

Получив идентификатор контейнера, мы можем войти в него с помощью команд.

docker exec -it CONTAINER_ID bash

Войти в полноэкранный режим Выйти из полноэкранного режима

Запустите docker, и вы увидите список всех команд docker.

Давайте теперь попробуем запустить образ Redis с помощью команд

docker run redis

Войти в полноэкранный режим Выйти из полноэкранного режима

Подождите, что произошло? Мы должны столкнуться со следующей ошибкой

Эта ошибка означает, что пользователь jenkins не имеет достаточных прав для выполнения определенных команд.

Выйдите из сессии и войдите в контейнер как пользователь root, сначала запустив docker ps, чтобы получить идентификатор контейнера, теперь мы войдем в контейнер как пользователь root:

docker exec -u 0 -it CONTAINER_ID bash

Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь мы можем дать права нашему пользователю Jenkins, выполнив следующие действия:

chmod 666 /var/run/docker.sock

Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы убедиться, что все прошло хорошо, запустите ls -l var/run/docker.sock и вы должны увидеть результат, как на рисунке ниже.

Чтобы убедиться, что все в порядке, войдите в контейнер jenkins под пользователем jenkins и выполните команду docker run redis. Ошибка, с которой мы столкнулись ранее, должна исчезнуть, а команда должна успешно выполниться.

2. Создайте конвейер для развертывания докер-образа Django на dockerhub.

Перейдите на свою страницу jenkins и создайте новое задание конвейера.

После успешного создания нам нужно подключить его к нашему репозиторию, нажав на вкладку pipeline и прокрутив вниз до раздела pipeline.

Выберите в выпадающем списке опцию pipeline script from SCM и добавьте URL репозитория.

Обязательно добавьте свои учетные данные github/ gitlab в качестве имени пользователя с опцией пароля и ветку, в которой существует ваш JenkinsFile.

В вашем проекте Django убедитесь, что JenkinsFile существует, теперь мы можем перейти к добавлению конфигураций Jenkins.

pipeline { 
    agent any 
    stages { 
        stage('Build') { 
            steps { 
                sh 'echo "Hello World"'
            }
        }
        stage('Done'){
            steps {
                echo " Wow! I'm done!"
            }
        }
        stage('Deploy staging ') { 
            steps { 
                echo 'I am deploying to a staging server
            }
        }

        stage ( 'Deploy prod') { 
            steps { 
                echo 'I am deploying to prod server

            }
        }
    }}

Войдите в полноэкранный режим Выход из полноэкранного режима

Теперь вы можете перенести ваш код в систему контроля версий и перейти на веб-страницу вашего сервера Jenkins, войти в созданное нами задание и нажать на кнопку build now, чтобы начать сборку.

Вы должны увидеть статус сборки с номером сборки, вы можете нажать на номер сборки, и это перенаправит вас на сборку.

Чтобы проверить информацию о выводе консоли, вы можете нажать на вывод консоли.

Мы можем продолжить и настроить этап, который будет собирать и развертывать наш образ Django на dockerhub. Убедитесь, что вы установили учетные данные и плагины привязки учетных данных для этого следующего шага. Добавьте свои учетные данные docker hub с идентификатором, чтобы вы могли получить к ним доступ в JenkinsFile.

pipeline { 
    agent any 
    stages { 
        stage('Build docker image') { 
            steps { 
                sh 'echo "Hello World"'
                script{ 
                //    
                withCredentials([ 
                    usernamePassword(credentials:'docker-hub-credentials', usernameVariable:USER, passwordVariable:PASSWORD)
                ]) { 
                    sh "docker build . -t YOUR_IMAGE_NAME"
                    sh "echo $PASSORD | docker login -u $USER --password-stdin"
                    sh "docker push YOUR_IMAGE_NAME"
                }
                }
            }
        }
    }
}

Войдите в полноэкранный режим Выход из полноэкранного режима

Мы ввели новое понятие, инструмент withCredentials, который мы подробно обсудим в следующей статье.

На данном этапе вы уже настроили Jenkins на дроплете Digital Ocean и использовали его для развертывания образа Django на Dockerhub. В следующей статье мы расскажем, как использовать скрипты groovy, переменные окружения и настроить триггер GitHub, который будет запускать наши сборки автоматически.

Будьте здоровы.

Оцените статью
devanswers.ru
Добавить комментарий