Pantheon дахь манай зочин хөгжүүлэгч хэрэгсэл бүтээгч нь GitLab CI/CD ашиглан WordPress-ийн байршуулалтыг хэрхэн автоматжуулах талаар ярьж байна.
В
Хөгжүүлэгчид нэг үе шаттай сервертэй тэмцэж байгааг би байнга хардаг.
Завсрын сервер ашиглах ээлжээ хүлээх эсвэл "Энд хар, гэхдээ эндээс хараахан битгий хар" гэсэн бичээстэй URL хаягийг үйлчлүүлэгчид илгээх нь үнэхээр таатай байна.
Гэхдээ Pantheon-д хувилбарыг хянах эсвэл тасралтгүй нэгтгэх, байршуулах (CI/CD) хэрэгслүүд байдаггүй. Гэхдээ энэ бол ямар ч хэрэгслийг нэгтгэх боломжтой уян хатан платформ юм.
Багууд хөгжүүлэхэд тодорхой хэрэгсэл ашигладаг бол угсрах, байрлуулахдаа өөр өөр хэрэгслийг ашигладаг болохыг би бас анзаарсан.
Жишээлбэл, тэд хувилбарын удирдлага болон CI/CD-д зориулсан өөр өөр хэрэгслүүдтэй. Та кодыг засах, асуудлыг оношлохын тулд эргэлдэж, хэрэгслүүдийн хооронд шилжих хэрэгтэй.
дээр
Би автоматжуулалтад дуртай, тиймээс би Pantheon-г GitLab-тай хэрхэн холбох талаар сурсан бөгөөд ингэснээр GitLab дээрх үндсэн салбарыг Pantheon-ийн үндсэн хөгжүүлэлтийн орчинд байршуулах болно. Мөн GitLab дээр нэгтгэх хүсэлтүүд нь Pantheon дахь олон хөгжүүлэгч орчинд код үүсгэж, байршуулах боломжтой.
Энэ зааварт би танд GitLab болон Pantheon хоёрын хооронд холболтыг хэрхэн тохируулах, WordPress болон Drupal ажлын урсгалыг оновчтой болгох талаар тайлбарлах болно.
Мэдээжийн хэрэг боломжтой,
Танилцуулга
Энэ нийтлэлийн хувьд Pantheon нь сайт бүрийг код, мэдээллийн сан, файл гэсэн гурван элемент болгон хуваадаг гэдгийг ойлгох хэрэгтэй.
Энэхүү код нь WordPress цөм, залгаасууд, сэдэв зэрэг CMS файлуудыг агуулдаг. Эдгээр файлуудыг удирддаг
Pantheon дахь файлууд нь медиа файлууд, өөрөөр хэлбэл сайтад зориулсан зургууд юм. Ихэвчлэн тэдгээрийг хэрэглэгчид байршуулдаг бөгөөд Git тэднийг үл тоомсорлодог.
Таамаглал
Pantheon болон GitLab дээрх миний төслийг гэдэг pantheon-gitlab-blog-demo
. Төслийн нэр өвөрмөц байх ёстой. Энд бид WordPress сайттай ажиллах болно. Та Drupal авч болно, гэхдээ та зарим зүйлийг өөрчлөх хэрэгтэй болно.
Би ашиглах болно
Төсөл үүсгэх
Эхлээд бүтээцгээе
Одоо
Хэрэв таны гар ямар нэг зүйлийг өөрчлөх гэж загатнаж байвал, жишээлбэл, залгаасуудыг устгах эсвэл нэмэх, тэвчээртэй байгаарай. Энэ сайт GitLab-д хараахан холбогдоогүй байгаа бөгөөд бид бүх кодын өөрчлөлтийг GitLab-ээр дамжуулан хийхийг хүсч байна.
WordPress-ийг суулгасны дараа Pantheon вэбсайтын хяналтын самбар руу буцаж очоод хөгжүүлэлтийн горимыг Git болгон өөрчил.
GitLab дээрх анхны амлалт
Одоо та Pantheon сайтаас GitLab руу анхны WordPress кодыг шилжүүлэх хэрэгтэй. Үүнийг хийхийн тулд бид Pantheon сайтын Git репозитороос кодыг хуулбарлаж, GitLab репозитор руу илгээдэг.
Үүнийг илүү хялбар, аюулгүй болгохын тулд,
Үүнийг хийхийн тулд сайтын хяналтын самбар дээрх Clone with Git талбараас командыг хуулж Pantheon сайтыг орон нутагт хувилна.
Хэрэв танд тусламж хэрэгтэй бол баримт бичгийг уншина уу
Одоо өөрчилье git remote origin
Pantheon-ын оронд GitLab руу зааж өгөх. Үүнийг хийж болно командой git remote
GitLab төсөл рүү орж, төслийн дэлгэрэнгүй хуудасны Clone унадаг цэснээс репозиторын URL-г хуулж авцгаая. Бид аль хэдийн SSH түлхүүрийг тохируулчихсан байгаа тул Clone with SSH сонголтыг сонгоцгооё.
анхдагчаар git remote
кодын агуулахын орон нутгийн хуулбарын хувьд - origin
. Үүнийг өөрчилж болно c git remote set-url origin [URL репозитория GitLab]
, хаалтны оронд бид бодит URL-г оруулна.
Эцэст нь бид эхлүүлнэ git push origin master --force
Pantheon-аас GitLab руу WordPress кодыг түлхэх.
Хүчний сонголт нь зөвхөн нэг удаа хэрэгтэй. Дараа нь багуудаар
git push
Энэ нь GitLab дээр байхгүй болно.
Итгэмжлэл болон хувьсагчдыг тохируулах
Pantheon болон GitLab-д нэвтрэхийн тулд SSH түлхүүрийг хэрхэн дотооддоо нэмсэнийг санаж байна уу? SSH токеныг GitLab болон Pantheon-д зөвшөөрөл олгоход ашиглаж болно.
GitLab нь маш сайн баримт бичигтэй. Харцгаая
Одоо бид эхний хоёр алхамыг дуусгах болно: ssh-keygen ашиглан дотооддоо шинэ SSH түлхүүрийн хослол үүсгэж, хувийн түлхүүрийг төсөлд хувьсагч болгон нэмье..
Дараа нь бид асуух болно SSH_PRIVATE_KEY
хэрхэн
Гурав, дөрөв дэх алхамд бид файл үүсгэх болно .gitlab-ci.yml
ийм агуулгатай:
before_script:
# See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "Gitlab CI"
Одоохондоо файлаа өгөхгүй байцгаая .gitlab-ci.yml
, дараа нь та түүнд өөр зүйл нэмэх хэрэгтэй болно.
Одоо бид тав дахь алхамыг хийж байна Эхний алхамд үүсгэсэн нийтийн түлхүүрээ бүтээх орчинд хандах шаардлагатай үйлчилгээндээ нэмнэ үү.
Манай тохиолдолд бид GitLab-аас Pantheon руу нэвтрэхийг хүсч байна. Бид Pantheon баримт бичиг дээрх зааврыг дагаж мөрддөг
Санаж байна уу: хувийн SSH нь GitLab дээр, нээлттэй SSH нь Pantheon дээр байдаг.
Өөр хэдэн орчны хувьсагчийг тохируулцгаая. Эхнийх нь PANTHEON_SITE гэж нэрлэгддэг. Үүний утга нь таны машин дээрх Pantheon сайтын нэр юм.
Машин дээрх нэрийг Clone with Git командын төгсгөлд жагсаасан болно. Та сайтыг аль хэдийн дотоодод хувилсан тул энэ нь орон нутгийн хадгалах сангийн лавлах нэр байх болно.
Дараа нь орчны хувьсагчийг тохируулъя PANTHEON_GIT_URL
. Энэ бол бидний аль хэдийн ашигласан Pantheon сайтын Git репозиторын URL юм.
Зөвхөн SSH репозиторын URL-г оруулахгүй
git clone
мөн төгсгөлд нь машин дээрх сайтын нэр.
Өө. Дууслаа, одоо бид файлаа дуусгаж болно .gitlab-ci.yml
.
Байршуулах даалгавар үүсгэ
GitLab CI дээр бидний хийх зүйл нь Git репозиторууд дээр өмнө нь хийж байсан зүйлтэй маш төстэй юм. Гэхдээ энэ удаад Pantheon репозиторийг хоёр дахь алсын Git эх сурвалж болгон нэмээд GitLab-аас Pantheon руу код оруулъя.
Үүнийг хийхийн тулд тохиргоогоо хийцгээе deploy
и deploy:dev
, учир нь бид Pantheon дээрх хөгжүүлэлтийн орчинд байршуулах болно. Үүссэн файл .gitlab-ci.yml
иймэрхүү харагдах болно:
stages:
- deploy
before_script:
# See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "Gitlab CI"
deploy:dev:
stage: deploy
environment:
name: dev
url: https://dev-$PANTHEON_SITE.pantheonsite.io/
script:
- git remote add pantheon $PANTHEON_GIT_URL
- git push pantheon master --force
only:
- master
Хувьсагчид SSH_PRIVATE_KEY, PANTHEON_SITE
и PANTHEON_GIT_URL
танил харагдах ёстой - бид эдгээр орчны хувьсагчдыг өмнө нь тохируулсан. Эдгээр хувьсагчийн тусламжтайгаар бид файл дахь утгуудыг ашиглах боломжтой болно .gitlab-ci.yml
олон удаа, тэдгээрийг зөвхөн нэг газар шинэчлэх шаардлагатай болно.
Эцэст нь файлыг нэмж, үйлдэж, илгээнэ үү .gitlab-ci.yml
GitLab дээр.
Байршлыг шалгаж байна
Хэрэв бид бүх зүйлийг зөв хийсэн бол даалгавар deploy:dev
GitLab CI/CD дээр амжилттай ажиллаж, амлалт өгөх болно .gitlab-ci.yml
Пантеонд. Ингээд харцгаая.
Pantheon руу нэгтгэх хүсэлт илгээж байна
Энд бид миний дуртай Pantheon функцийг ашиглах болно
Эхлээд шинэ Git салбарыг ашиглан дотооддоо хийцгээе git checkout -b multidev-support
. Одоо дахиад нэг зүйлийг өөрчилье .gitlab-ci.yml
.
Би Pantheon орчны нэрэнд нэгтгэх хүсэлтийн дугаарыг оруулах дуртай. Жишээлбэл, анхны нэгтгэх хүсэлт нь mr-1
, хоёрдугаарт - mr-2
гэх мэт.
Нэгтгэх хүсэлт өөрчлөгддөг тул бид Pantheon салбаруудын нэрийг динамикаар тодорхойлох хэрэгтэй. GitLab дээр хялбар байдаг - та зүгээр л ашиглах хэрэгтэй
Бид авч болно $CI_MERGE_REQUEST_IID
нэгтгэх хүсэлтийн дугаарыг зааж өгөх. Энэ бүгдийг өмнө нь тодорхойлсон глобал орчны хувьсагчтай хамт хэрэглэж, файлын төгсгөлд шинэ deploy:multidev даалгавар нэмье. .gitlab-ci.yml
.
deploy:multidev:
stage: deploy
environment:
name: multidev/mr-$CI_MERGE_REQUEST_IID
url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
script:
# Checkout the merge request source branch
- git checkout $CI_COMMIT_REF_NAME
# Add the Pantheon git repository as an additional remote
- git remote add pantheon $PANTHEON_GIT_URL
# Push the merge request source branch to Pantheon
- git push pantheon $CI_COMMIT_REF_NAME:mr-$CI_MERGE_REQUEST_IID --force
only:
- merge_requests
Энэ нь бидний даалгавартай төстэй байх болно deploy:dev
, зөвхөн салбар нь Pantheon руу илгээгдсэн, биш master
.
Бид шинэчлэгдсэн файлыг нэмж орууллаа .gitlab-ci.yml
, тэгээд одоо GitLab руу шинэ салбарыг түлхэцгээе git push -u origin multidev-support
.
Одоо салбараас шинээр нэгтгэх хүсэлт үүсгэцгээе multidev-support
дарснаар Нэгтгэх хүсэлт үүсгэх.
Нэгтгэх хүсэлтийг үүсгэсний дараа бид CI/CD даалгаврыг хэрхэн гүйцэтгэж байгааг харна deploy:multidev
.
Хараач, Пантеон руу шинэ утас илгээгдсэн байна. Гэхдээ хэрэв бид Pantheon сайтын хяналтын самбар дээрх multidev хэсэг рүү очвол тэнд шинэ орчин харагдахгүй.
Git салбаруудын хэсгийг харцгаая.
Үүний үр дүнд бидний утас mr-1
Пантеонд ирлээ. Салбараас орчин бүрдүүлье mr-1
.
Бид multidev орчин үүсгэсэн, одоо GitLab руу буцаж очоод хэсгийг харцгаая Үйл ажиллагаа > Хүрээлэн буй орчин. Бид бичлэгүүдийг харах болно dev
и mr-1
.
Энэ нь бид оруулга нэмсэнтэй холбоотой юм environment
Нэртэйгээр name
и url
CI/CD даалгаврууд руу. Хэрэв бид нээлттэй орчны дүрс дээр дарвал Pantheon дээрх multidev орчны URL руу очих болно.
Multidev үүсгэх автоматжуулалт
Зарчмын хувьд та энд зогсоож, нэгтгэх хүсэлт бүрт multidev орчныг бий болгохыг санаарай, гэхдээ энэ процессыг автоматжуулж болно.
Pantheon нь тушаалын мөрийн хэрэгсэлтэй
Үүнийг шалгахын тулд бидэнд шинэ нэгтгэх хүсэлт хэрэгтэй байна. ашиглан шинэ салбар үүсгэцгээе git checkout -b auto-multidev-creation
.
GitLab CI/CD даалгавруудад Terminus ашиглахын тулд танд Terminus-тай баталгаажуулах машины токен, Терминустай контейнер дүрс хэрэгтэй.
PANTHEON_MACHINE_TOKEN
.
Хэрэв та GitLab орчны хувьсагчдыг хэрхэн нэмэхээ мартсан бол бидний тодорхойлсон газар руу буцна уу
PANTHEON_SITE
.
Терминус ашиглан Dockerfile үүсгэх
Хэрэв та Docker ашигладаггүй эсвэл файлд дургүй бол Dockerfile
, миний зургийг аваарай registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
мөн энэ хэсгийг алгасах.
Терминус бол PHP командын мөрийн хэрэгсэл тул РНР зургаас эхэлцгээе. Би Composer-ээр дамжуулан Terminus суулгаж байгаа тул ашиглах болно Dockerfile
локал репозиторын лавлахад дараах агуулгатай:
# Use the official Composer image as a parent image
FROM composer:1.8
# Update/upgrade apk
RUN apk update
RUN apk upgrade
# Make the Terminus directory
RUN mkdir -p /usr/local/share/terminus
# Install Terminus 2.x with Composer
RUN /usr/bin/env COMPOSER_BIN_DIR=/usr/local/bin composer -n --working-dir=/usr/local/share/terminus require pantheon-systems/terminus:"^2"
Хэсгийн зургийг угсарч илгээх зааврыг дагана уу Зураг бүтээх, түлхэх в Dockerfile
мөн GitLab руу түлхэнэ үү.
Хэсгийг нээж байна Бүртгэл GitLab төсөл дээр. Хэрэв бүх зүйл төлөвлөгөөний дагуу явагдсан бол бидний дүр төрх тэнд байх болно. Зургийн шошго руу холбоосыг бичнэ үү - энэ нь бидэнд файлд хэрэгтэй .gitlab-ci.yml
.
Хэсэг script
асуудалд deploy:multidev
өсч эхэлж байгаа тул тусдаа файл руу шилжүүлье. Шинэ файл үүсгэх private/multidev-deploy.sh:
#!/bin/bash
# Store the mr- environment name
export PANTHEON_ENV=mr-$CI_MERGE_REQUEST_IID
# Authenticate with Terminus
terminus auth:login --machine-token=$PANTHEON_MACHINE_TOKEN
# Checkout the merge request source branch
git checkout $CI_COMMIT_REF_NAME
# Add the Pantheon Git repository as an additional remote
git remote add pantheon $PANTHEON_GIT_URL
# Push the merge request source branch to Pantheon
git push pantheon $CI_COMMIT_REF_NAME:$PANTHEON_ENV --force
# Create a function for determining if a multidev exists
TERMINUS_DOES_MULTIDEV_EXIST()
{
# Stash a list of Pantheon multidev environments
PANTHEON_MULTIDEV_LIST="$(terminus multidev:list ${PANTHEON_SITE} --format=list --field=id)"
while read -r multiDev; do
if [[ "${multiDev}" == "$1" ]]
then
return 0;
fi
done <<< "$PANTHEON_MULTIDEV_LIST"
return 1;
}
# If the mutltidev doesn't exist
if ! TERMINUS_DOES_MULTIDEV_EXIST $PANTHEON_ENV
then
# Create it with Terminus
echo "No multidev for $PANTHEON_ENV found, creating one..."
terminus multidev:create $PANTHEON_SITE.dev $PANTHEON_ENV
else
echo "The multidev $PANTHEON_ENV already exists, skipping creating it..."
fi
Скрипт нь хувийн лавлах болон deploy:multidev
файл .gitlab-ci.yml
Ингэснээр энэ нь дараах байдалтай болно.
deploy:multidev:
stage: deploy
environment:
name: multidev/mr-$CI_MERGE_REQUEST_IID
url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
script:
# Run the multidev deploy script
- "/bin/bash ./private/multidev-deploy.sh"
only:
- merge_requests
Бид өөрсдийн даалгавруудыг үүсгэсэн захиалгат дүрс дээр гүйцэтгэж байгаа эсэхийг шалгах хэрэгтэй, тиймээс тодорхойлолт нэмье image
бүртгэлийн URL-аас .gitlab-ci.yml
. Үүний үр дүнд бид ийм файлтай болсон .gitlab-ci.yml
:
image: registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
stages:
- deploy
before_script:
# See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "Gitlab CI"
deploy:dev:
stage: deploy
environment:
name: dev
url: https://dev-$PANTHEON_SITE.pantheonsite.io/
script:
- git remote add pantheon $PANTHEON_GIT_URL
- git push pantheon master --force
only:
- master
deploy:multidev:
stage: deploy
environment:
name: multidev/mr-$CI_MERGE_REQUEST_IID
url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
script:
# Run the multidev deploy script
- "/bin/bash ./private/multidev-deploy.sh"
only:
- merge_requests
Нэмэх, хийх, илгээх private/multidev-deploy.sh
и .gitlab-ci.yml
. Одоо бид GitLab руу буцаж очоод CI/CD даалгаврыг дуусгахыг хүлээнэ. Тэвчээртэй байгаарай: multidev-г үүсгэхэд хэдэн минут шаардлагатай.
Дараа нь бид Pantheon дээрх multidev жагсаалтыг харна уу. Өө гайхамшиг! Multidev орчин mr-2
аль хэдийн энд байна.
дүгнэлт
Биднийг нэгтгэх хүсэлтийг нээж, орчинг автоматаар үүсгэж эхлэхэд манай баг илүү хөгжилтэй байсан.
GitLab болон Pantheon-ийн хүчирхэг хэрэгслүүдийн тусламжтайгаар та GitLab-ийг Pantheon-д автоматаар холбох боломжтой.
Бид GitLab CI/CD ашигладаг тул ажлын урсгал маань өсөх зайтай байх болно. Таныг эхлүүлэх хэд хэдэн санаа энд байна:
- Барилгын алхам нэмнэ үү.
- Автомат туршилтыг нэмнэ үү.
- Кодын стандартыг хангаж байгаа эсэхийг шалгах даалгавар нэмнэ үү.
- Нэмэх
динамик хэрэглээний аюулгүй байдлын туршилт .
GitLab, Pantheon болон автоматжуулалтын талаар юу гэж бодож байгаагаа надад хэлээрэй.
Жич. Та Pantheon-ын командын мөрийн хэрэгсэл болох Terminus гэдгийг мэдэх үү.
Бид Pantheon-ын 2-р хувилбар дээр сайн ажилласан build:project:create
Танд зөвхөн Pantheon токен болон GitLab токен хэрэгтэй. Тэрээр жишээ төслүүдийн нэгийг Composer болон автоматжуулсан туршилтаар байрлуулж, GitLab, Pantheon-ын шинэ сайт дээр шинэ төсөл үүсгэж, орчны хувьсагч болон SSH түлхүүрүүдийг ашиглан холбох болно.
Зохиогчийн тухай
Эндрю Тейлор хөгжүүлэгчдэд зориулсан хэрэгслүүдийг бий болгодог
Эх сурвалж: www.habr.com