په پینټون کې زموږ د میلمه پراختیا کونکي اوزار جوړونکی د GitLab CI/CD په کارولو سره د ورڈپریس ګمارنې اتومات کولو څرنګوالي په اړه خبرې کوي.
В
زه ډیری وختونه ګورم چې پراختیا کونکي د یو واحد سټینګ سرور سره مبارزه کوي.
دا د خوښۍ ځای دی چې د منځګړی سرور کارولو لپاره خپل وار ته انتظار وکړئ یا پیرودونکو ته د یادښت سره یو URL واستوئ: "دلته وګورئ، مګر لاهم دلته مه ګورئ."
مګر Pantheon د نسخې کنټرول یا دوامداره ادغام او پلي کولو (CI/CD) لپاره وسیلې نلري. مګر دا یو انعطاف وړ پلیټ فارم دی چې ورسره تاسو کولی شئ هر ډول وسیلې مدغم کړئ.
ما دا هم ولیدل چې ټیمونه د پراختیا لپاره ځینې وسیلې کاروي، او مختلف د غونډو او ګمارلو لپاره.
د مثال په توګه، دوی د نسخې کنټرول او CI/CD لپاره مختلف وسایل لري. تاسو باید د کوډ ایډیټ کولو او د ستونزو تشخیص لپاره د وسیلو تر مینځ تیر شئ او بدل کړئ.
په
زه اتومات خوښوم ، نو ما زده کړل چې څنګه پینټون له ګیټ لیب سره وصل کړم ترڅو د ګیټ لیب اصلي څانګې ته ژمنې په پینټون کې اصلي پرمختیا چاپیریال ته ځای په ځای شي. او په GitLab کې د ادغام غوښتنې کولی شي په پینټون کې ملټي ډیف چاپیریالونو ته کوډ رامینځته او ځای په ځای کړي.
پدې ټیوټوریل کې ، زه به تاسو ته لارښوونه وکړم چې څنګه د GitLab او Pantheon ترمنځ اړیکه تنظیم کړئ او ستاسو د ورڈپریس او ډروپل کاري فلو ته وده ورکړئ.
البته دا ممکنه ده،
پېژندنه
د دې پوسټ لپاره، تاسو اړتیا لرئ پوه شئ چې پینټون هر سایټ په دریو عناصرو ماتوي: کوډ، ډیټابیس، او فایلونه.
په کوډ کې د CMS فایلونه شامل دي لکه د ورڈپریس کور، پلگ ان، او موضوعات. دا فایلونه په کې اداره کیږي
په Pantheon کې فایلونه د رسنیو فایلونه دي، دا د سایټ لپاره انځورونه دي. معمولا دوی د کاروونکو لخوا اپلوډ شوي او Git دوی له پامه غورځوي.
انګیرنې
په Pantheon او GitLab کې زما پروژه ویل کیږي pantheon-gitlab-blog-demo
. د پروژې نوم باید ځانګړی وي. دلته به موږ د ورڈپریس سایټ سره کار وکړو. تاسو کولی شئ ډروپل واخلئ، مګر تاسو اړتیا لرئ چې ځینې شیان بدل کړئ.
زه به وکاروم
یوه پروژه جوړه کړئ
لومړی، راځئ چې جوړ کړو
اوس
که ستاسو لاسونه د یو څه بدلولو لپاره خارښ وي، د بیلګې په توګه، فلګونه لرې کړئ یا اضافه کړئ، صبر وکړئ. سایټ لا تر اوسه د GitLab سره وصل ندی، او موږ غواړو چې د کوډ ټول بدلونونه د GitLab له لارې لاړ شي.
یوځل چې موږ ورڈپریس نصب کړو، بیرته د پینټون ویب پاڼې ډشبورډ ته لاړ شئ او د پراختیا حالت Git ته بدل کړئ.
په GitLab کې لومړنۍ ژمنه
اوس تاسو اړتیا لرئ د پینتیون سایټ څخه GitLab ته لومړني ورڈپریس کوډ انتقال کړئ. د دې کولو لپاره، موږ کوډ په محلي توګه د پینټون سایټ د Git ذخیره څخه کلون کوو، او بیا یې د GitLab ذخیره ته لیږو.
د دې لپاره چې دا اسانه او خوندي وي،
د دې کولو لپاره، د ویب پاڼې ډشبورډ کې د کلون سره د ګیټ فیلډ څخه د کمانډ کاپي کولو سره د پینټون ویب پاڼه په محلي توګه کلون کړئ.
که تاسو مرستې ته اړتیا لرئ، اسناد ولولئ
اوس راځئ چې بدلون وکړو git remote origin
د Pantheon پرځای GitLab ته اشاره وکړئ. دا کیدی شي командой git remote
راځئ چې د GitLab پروژې ته لاړ شو او د پروژې توضیحاتو پا pageې کې د کلون ډراپ ډاون څخه د ذخیره کولو URL کاپي کړو. راځئ چې د SSH اختیار سره کلون غوره کړو، ځکه چې موږ دمخه د SSH کیلي ترتیب کړې ده.
په تلواله git remote
د کوډ ذخیره ځایی کاپي لپاره - origin
. دا بدل کیدی شي c git remote set-url origin [URL репозитория GitLab]
، چیرې چې د بریکٹ پرځای موږ اصلي URL داخلوو.
په نهایت کې ، موږ پیل کوو git push origin master --force
د ورڈپریس کوډ له Pantheon څخه GitLab ته فشار ورکړئ.
د ځواک اختیار یوازې یو ځل اړین دی. بیا په ټیمونو کې
git push
دا به په GitLab کې نه وي.
د اعتبار او تغیراتو ترتیب کول
په یاد ولرئ چې موږ څنګه په سیمه ایزه توګه د SSH کیلي اضافه کړه ترڅو Pantheon او GitLab ته ننوتل؟ د 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_SITE نومیږي. د دې ارزښت ستاسو په ماشین کې د Pantheon سایټ نوم دی.
په ماشین کې نوم د ګیټ کمانډ سره د کلون په پای کې لیست شوی. تاسو دمخه سایټ په محلي ډول کلون کړی دی، نو دا به د ځایی ذخیره کولو لارښود نوم وي.
بیا، راځئ چې د چاپیریال متغیر تنظیم کړو PANTHEON_GIT_URL
. دا د پینټون سایټ لپاره د Git ذخیره URL دی چې موږ دمخه کارولی دی.
یوازې د SSH ذخیره URL دننه کړئ، پرته
git clone
او په پای کې په ماشین کې د سایټ نوم.
اوف دا وشو، اوس موږ کولی شو خپل فایل بشپړ کړو .gitlab-ci.yml
.
د ځای پرځای کولو دنده جوړه کړئ
هغه څه چې موږ به په پیل کې د GitLab CI سره ترسره کړو د هغه څه سره ورته دي چې موږ په تیرو وختونو کې د Git ذخیره کولو سره ترسره کړي دي. مګر دا ځل ، راځئ چې د پینټون ذخیره د دوهم ریموټ Git سرچینې په توګه اضافه کړو ، او بیا د GitLab څخه Pantheon ته کوډ فشار ورکړئ.
د دې کولو لپاره، راځئ چې تنظیم کړو deploy
и deploy:dev
، ځکه چې موږ به په پینټون کې پرمختیایی چاپیریال ته ځای په ځای کړو. پایله لرونکی فایل .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 کې. راځئ چې یو نظر ترلاسه کړو.
پینټون ته د ادغام غوښتنې سلسلې لیږل
دلته به موږ زما د خوښې پینتیون ځانګړتیا وکاروو -
لومړی راځئ چې په محلي توګه په کارولو سره د Git نوې څانګه جوړه کړو git checkout -b multidev-support
. اوس راځئ چې یو څه بیا بدل کړو .gitlab-ci.yml
.
زه غواړم د پینټون چاپیریال نوم کې د ادغام غوښتنې شمیره شامل کړم. د مثال په توګه، لومړی د یوځای کولو غوښتنه ده mr-1
، دوهم - mr-2
etc
د ادغام غوښتنه بدلیږي، نو موږ اړتیا لرو چې په متحرک ډول د پینټون څانګې نومونه وټاکو. دا په GitLab کې اسانه ده - تاسو یوازې کارولو ته اړتیا لرئ
موږ کولی شو واخلو $CI_MERGE_REQUEST_IID
د ادغام غوښتنې شمیره مشخص کولو لپاره. راځئ چې دا ټول د نړیوال چاپیریال متغیرونو سره پلي کړو چې مخکې مو مشخص کړي او د فایل په پای کې یو نوی ځای پرځای کول: ملټي دیو دنده اضافه کړئ .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
یوازې څانګه پینټون ته لیږل کیږي، نه master
.
موږ تازه شوی فایل اضافه او ژمن کړی دی .gitlab-ci.yml
، او اوس راځئ چې GitLab ته نوې څانګه فشار ورکړو git push -u origin multidev-support
.
اوس راځئ چې د څانګې څخه د ادغام نوې غوښتنه جوړه کړو multidev-support
په کلیک کولو سره د ادغام غوښتنه جوړه کړئ.
د ادغام غوښتنې رامینځته کولو سره ، موږ ګورو چې د CI/CD دنده څنګه اجرا کیږي deploy:multidev
.
وګورئ، یو نوی تار پینټون ته لیږل شوی. مګر که موږ د پینتیون سایټ ډشبورډ کې ملټي ډیف برخې ته لاړ شو ، نو موږ به هلته نوی چاپیریال ونه ګورو
راځئ چې د Git څانګو برخه وګورو.
په پایله کې، زموږ موضوع mr-1
Pantheon ته ورسېدم. راځئ چې د یوې څانګې څخه چاپیریال جوړ کړو mr-1
.
موږ یو څو اړخیز چاپیریال رامینځته کړی ، اوس راځئ چې بیرته GitLab ته لاړ شو او برخې ته وګورو عملیات > چاپیریال. موږ به د ننوتلو لپاره وګورو dev
и mr-1
.
دا ځکه چې موږ داخله اضافه کړه environment
د نوم سره name
и url
په CI/CD دندو کې. که موږ د خلاص چاپیریال آیکون باندې کلیک وکړو ، نو موږ به په پینټون کې د ملټي ډیو چاپیریال URL ته یوو.
د ملټي ډیف رامینځته کول اتومات کړئ
په اصولو کې، تاسو کولی شئ دلته ودریږئ او یوازې د هر ادغام غوښتنې لپاره د څو اړخیز چاپیریال رامینځته کول په یاد ولرئ، مګر دا پروسه اتومات کیدی شي.
Pantheon د کمانډ لاین وسیله لري
موږ د دې ازموینې لپاره نوي ادغام غوښتنې ته اړتیا لرو. راځئ چې په کارولو سره نوې څانګه جوړه کړو git checkout -b auto-multidev-creation
.
د GitLab CI/CD دندو کې د ټرمینس کارولو لپاره ، تاسو د ټرمینس سره د تصدیق لپاره د ماشین نښه او د ټرمینس سره د کانټینر عکس ته اړتیا لرئ.
PANTHEON_MACHINE_TOKEN
.
که تاسو د GitLab چاپیریال متغیرونو اضافه کولو څرنګوالی هیر کړی ، نو بیرته لاړشئ چیرې چې موږ تعریف کړی
PANTHEON_SITE
.
د ټرمینس سره د ډاکر فایل رامینځته کول
که تاسو ډاکر نه کاروئ یا فایلونه نه خوښوئ Dockerfile
زما عکس واخله registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
او دا برخه پریږدئ.
ټرمینس د پی ایچ پی کمانډ لاین وسیله ده، نو راځئ چې د پی ایچ پی عکس سره پیل وکړو. زه د کمپوزر له لارې ټرمینس نصب کوم، نو زه به یې وکاروم 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 کولی شي د جوړولو لپاره څو دقیقې وخت ونیسي.
بیا موږ په پینټون کې د ملټيډیو لیست ته ګورو. اې معجزه! څو اړخیز چاپیریال mr-2
لا دمخه دلته
پایلې
زما ټیم خورا ډیر ساتیري درلوده کله چې موږ د ادغام غوښتنې خلاصول او په اتوماتيک ډول چاپیریال رامینځته کول پیل کړل.
د GitLab او Pantheon د پیاوړې وسیلو سره، تاسو کولی شئ GitLab په اتوماتيک ډول Pantheon سره وصل کړئ.
له هغه ځایه چې موږ د GitLab CI/CD کاروو، زموږ د کار جریان به د ودې لپاره خونه ولري. دلته ستاسو د پیل کولو لپاره یو څو نظرونه دي:
- د جوړولو ګام اضافه کړئ.
- اتوماتیک ازموینه اضافه کړئ.
- یو دنده اضافه کړئ ترڅو ډاډ ترلاسه کړئ چې د کوډ معیارونه پوره کیږي.
- اضافه کول
د متحرک غوښتنلیک امنیت ازموینه .
اجازه راکړئ پوه شو چې تاسو د GitLab، Pantheon او اتومات په اړه څه فکر کوئ.
PS ایا تاسو پوهیږئ چې ټرمینس، د پینټون د کمانډ لاین وسیله،
موږ په پینټون کې زموږ په 2 نسخه کې ښه دنده ترسره کړې build:project:create
تاسو یوازې د پینټون ټوکن او د ګیټ لیب ټوکن ته اړتیا لرئ. هغه به د نمونې پروژې څخه یوه د کمپوزر او اتوماتیک ازموینې سره ځای په ځای کړي ، په ګیټ لیب کې یوه نوې پروژه رامینځته کړي ، د نوي پینتیون سایټ ، او د چاپیریال متغیرونو او SSH کلیدونو په کارولو سره یې وصل کړي.
د لیکوال په اړه
انډریو ټیلر د پراختیا کونکو لپاره وسیلې رامینځته کوي
سرچینه: www.habr.com