Gitlab Runner для организации Dev-Test-Prod
![[IMG]](https://lh6.googleusercontent.com/QyePFjWOnXAVA_cFy5sfMKAknxoUXzwiuZGCLuGsvKwFwUlF58UHnK72lg05EXuI6TDr32H7hkaOUZbU-N6FED14DjydkgixXG2EIFjD7DvbEy7HTcV7miae3gDDHJLveEdKcOR5f4qNLaz_yjMH8ypcZUbG2fDeZtE3anaM0WRViIH9ePB6pat_DQ)
Схема Develop-Test-Production (разработка-тестирование-эксплуатация) предполагает, что разработка и тестирование новых процессов ведутся не в рабочем окружении(где работают обычные пользователи), а в отдельных окружениях. В рабочее окружение переносятся только проверенные, протестированные решения.
Develop-Test-Production увеличивает стабильность системы и удобство разработки.
Для установки и настройки Gitlab Runner посмотрите статью “Gitlab Runner для распаковки e365”. Мы будем продолжать эту статью, чтоб решить текущую задачу.
Для организации схемы Dev-Test-Prod доработаем проект Main-pipeline. Добавим еще два этапа - testing и production.
Добавим изменения в файл .gitlab-ci.yml
Код:
stages:
- unpack
- testing
- production
include:
- "/templates/.unpack_runner.yml"
- "/templates/.test_runner.yml"
- "/templates/.prod_runner.yml"
image:
alpine
Содержимое .test_runner.yml
Код:
testing:
image:
deconstruct365/e365_importer:latest
stage:
testing
allow_failure: true
rules:
- if: $CI_COMMIT_MESSAGE =~ /Merge.+branch\s(.*)\sinto(.*)/ &&
$CI_COMMIT_BRANCH =~ /.*test.*/
script:
- apk update && apk add git
- env > ./gitlab_vars.env
- pip3 install python-dotenv
- git config --global user.name $CI_ROBOT_NAME
- git config --global user.email $CI_ROBOT_EMAIL
- git remote set-url origin $GITLAB_PROJECT_PATH
- cp /importer/elma365pm . && cp /importer/importer.py .
- python3 ./importer.py
Содержимое .prod_runner.yml
Код:
production:
image:
deconstruct365/e365_importer:latest
stage:
production
allow_failure: true
rules:
- if: $CI_COMMIT_MESSAGE =~ /Merge.+branch\s(.*)\sinto(.*)/ &&
$CI_COMMIT_BRANCH =~ /.*prod.*/
script:
- apk update && apk add git
- env > ./gitlab_vars.env
- pip3 install python-dotenv
- git config --global user.name $CI_ROBOT_NAME
- git config --global user.email $CI_ROBOT_EMAIL
- git remote set-url origin $GITLAB_PROJECT_PATH
- cp /importer/elma365pm . && cp /importer/importer.py .
- python3 ./importer.py
Необходимо определить переменные окружения, которые будут использоваться в процессе запуска работ раннера. Для этого на странице с проектом, в левом меню выбираем Settings > CI/CD
TEST_URL - IP или hostname вашего тестового стенда.
TEST_TOKEN - токен тестового стенда
PROD_URL - IP или hostname вашего продакшен сервера.
PROD_TOKEN - токен продакшен сервера.
Проверка работы
Для проверки продолжим работать с проектом, который создали в предыдущей статье.
Создадим в проекте Test еще две ветки - test и prod
Для того, чтоб отправить изменения на тестовое окружение нужно создать merge-request(MR) в тестовую ветку test. Для создания MR есть два варианта:
- После коммита выбрать Create merge request из уведомления сверху вашего проекта:
![[IMG]](https://lh6.googleusercontent.com/_OtWA3quO2SfkwgnNoU8Idj2BV3t8fxfACYLI-bI9iwgvCkwGpz0gC01Oi7vPkZvdEYJGtyL4Id32FaCPjENDJomTuLUGKaeITyx55uCsVg-jYynWlJdaWCOvkZjp2nuoR8LZVRHeAg87QXtO1RZxNSrF1ET7vYS2olUc7L8-9fMnVDCrnwQ9e9bqA)
- В левом меню проекта выбрать Merge requests, и в новом окне нажать New merge request:
![[IMG]](https://lh5.googleusercontent.com/47nCTdKvKPjWS-MhgTPGpVV3EKiWPOJ4ZrWMbvr5GL0kmN3-u1_xSoZl08dzLdkui9IpcFR-1qKZnKuXOQqFQifwMqU1gbTQigGealMWv_kWPQPv8cE_J5cNz50TSLX8OI0jt6pA4TnZUlVCBBpxjWDZ7jUCMkGNOz0XL2OBnoMEqNZOB6yyVT4enA)
![[IMG]](https://lh6.googleusercontent.com/ESkCyl5NRVu1LztV32qoh1l-TZWqObD53vFQkTUgBgzeSMjhqXjoMS28mqy5qq3EV3H6PxsoL94sQZv0Iyyl6sY625sNdWFBm0oZNeR-Ndpt7tPO7sPvunsIyACnIkgxBcm_IiNh8AinEp73GtiUSMPi9lBZ8Q0yW0Ng2QLPB5ttUyUfGRwEHB7h_A)
В этом случае будет предложено выбрать ветки для слияния:
![[IMG]](https://lh4.googleusercontent.com/Y1GU2UBZr0yg49a_aOIHgdY4S2Sq4ER55LiXoAP32kWLLRxj_i_jphkNgtN8_1C5zyzvbLaNaKcG5vVh58iuzdEJnxGMijeYbKbhfPnF3_LAMXY-MDW39r9czVwShpj0tM3m_qdY3RtNfsgO_GsgYtKRsheLAP1CBbyw-AQ1Je-EVPlRxBlTenUlJg)
Если вы пошли по первому пути, то чтобы попасть в меню выбора веток, нажмите на Change branches в верхней части окна:
![[IMG]](https://lh3.googleusercontent.com/zxYhZVCRRjNjBT8la-ruK7peaHxl53kMMSfQG7OVInM40hXWASKsu7OGwGQBeSNjP2O0OVtTHthJWsrMPfVTQtktcQKQNFFT9AryqNi0efVC7BxhVfYS96G_cuWqWw889kHiGnJrNuo1SUbCSaEGiX74Ber-NL9XbjYO3tN89kkO30LmZlX5a2LRPg)
После выбора веток в нижней части нажимаем на Create merge request:
![[IMG]](https://lh6.googleusercontent.com/m5FExcIAa98deSb0LLSGBBUFXR-1Rm152SCdsFjqAIRi6fjT7aZV8gO7i73BnOtCk3wFFY2t9wlwXalZQNj5Db2Sj3eTGNBj2O9i6xH8C6q0tVAgxdbptE9i_1x5M7FReucWMK_9MJV4H2G_Zj8i6fduCo3Q-oMFAPAzaz4-HYh_ZHoLcSdRop6VHA)
Теперь, после подтверждения слияния веток ревьюером, запустится следующий этап раннера, что можно будет увидеть прямо на странице с merge-request’ом:
![[IMG]](https://lh6.googleusercontent.com/0n33EsyUTfCATYA_jSnH2DnmyAeXcVjVHppaqOzk6NM_wV6zLd8zvuFgeZeNasp4dCXz_WJr6QenCsweeJQ49NAoGx8hN7Drq7DsvUm5WoDg0COk3zaKzxCG1Xq2A-mYdVKM3SbA29SZFkO_SBEZo2wp20br1tC97c6_r4k0hl3-hCX-aAzRFGKkng)
![[IMG]](https://lh3.googleusercontent.com/MMpFWf47fUZDCfUDSWsCfgJSmX-IfVCoT0z3krSglngbI_luY_TPvxttXCPEnBBuVPyPCUguuF5M8rbqLlRXCbzrl4yRwYXI_HO5gcm0F_EdaMDJgYWPic_czMHMVELA893XL6ZPDhMyifUZPw1OPGQvhigQblZo70h1F6vVf3Xd90CDxZ6XgGLIjg)
На странице с пайплайном можно увидеть, что выполняется джоб с другим названием, например production:
![[IMG]](https://lh5.googleusercontent.com/YVGRrCTXirIIhziV03vJvgmcPTHDPu9_ozeV1tjHym3qHdzueAMs4p4y_ce7q-K0phTyfEqkLT0SUK3T-ZNvwirkf4hVWpKvNjD_2MGDEHfFVyvn3OKJPGRCI3y-IWSqL-WNTIEXZ60tJ_2VrqjHF_1MhTTNgUY3WbFwmKF6FdzpO39-kcJsZpm5CQ)
В случае, если слияние происходит с test веткой:
![[IMG]](https://lh4.googleusercontent.com/uHChhiDeENWpmEQAmM_N90nl5sdgTgxWWvmJxjmzqAKnRUAmCaTMuI2yI1BelsLKe02I4YzB15Y-YCLCNaVW_Te5ralhFU3ud2VRMSYsKow77n9e8gX6EqPVVeNH-7ePXkzPh-7QQxXZFBMjysI8nFHbUxExbjdgEA1K47PMeUsZvcaYi5NRvtT4lA)
После того, как этап успешно завершен, можно увидеть, что решение импортировалось к вам на тестовый или продакшен стенд, в зависимости от ветки: