GitLab ۽ Pantheon کي ڪيئن ڳنڍجي ۽ ڊروپل ۽ ورڈپریس ورڪ فلوز کي بهتر بڻايو وڃي
اسان جو مهمان، ڊولپر ٽولز جو خالق Pantheon تي، GitLab CI/CD استعمال ڪندي ورڈپریس ڊيپلائيمينٽس کي خودڪار ڪرڻ بابت ڳالهائي ٿو.
В Pantheon مان ڊولپر لاڳاپن ۾ ڪم ڪريان ٿو، تنهن ڪري مان هميشه ڳولي رهيو آهيان ورڈپریس ۽ ڊروپل ڊولپرز جي مدد لاءِ نوان طريقا انهن جي ڪم فلوز ۾ آٽوميشن جا مسئلا حل ڪرڻ. هن کي ڪرڻ لاء، آئون نئين اوزار سان تجربا ڪرڻ پسند ڪريان ٿو ۽ انهن کي هڪ ٻئي سان گڏ ڪرڻ لاء موثر طريقي سان ڪم ڪرڻ لاء.
مان اڪثر ڊولپرز کي هڪ واحد اسٽيجنگ سرور سان جدوجهد ڪندي ڏسان ٿو.
اهو هڪ اهڙي خوشي آهي جو توهان جي موڙ جو انتظار ڪرڻ لاءِ وچولي سرور استعمال ڪرڻ يا ڪلائنٽ کي نوٽ سان هڪ URL موڪليو: ”هتي ڏسو، پر اڃا هتي نه ڏسو.
Multidev ماحول - ھڪڙو ٿڌو Pantheon اوزار - ھن مسئلي کي حل ڪري ٿو، ڇاڪاڻتہ انھن سان توھان گٽ شاخن لاء ماحول پيدا ڪري سگھو ٿا. هر ملٽي ڊيو ماحول جو پنهنجو URL ۽ ڊيٽابيس آهي، تنهن ڪري ڊولپر خاموشيءَ سان ڪم ڪري سگهن ٿا، معيار چيڪ ڪري سگهن ٿا، ۽ هڪ ٻئي جي آڱرين تي قدم رکڻ کان سواءِ منظوري حاصل ڪري سگهن ٿا.
پر Pantheon وٽ نسخو ڪنٽرول يا لڳاتار انضمام ۽ مقرري (CI/CD) جا اوزار نه آھن. پر اهو هڪ لچڪدار پليٽ فارم آهي جنهن سان توهان ڪنهن به اوزار کي ضم ڪري سگهو ٿا.
مثال طور، انهن وٽ ورزن ڪنٽرول ۽ CI/CD لاءِ مختلف اوزار آهن. توھان کي گھمڻ ڦرڻو پوندو ۽ ٽولن جي وچ ۾ ڪوڊ کي ايڊٽ ڪرڻ ۽ مسئلن جي تشخيص ڪرڻ لاءِ.
تي GitLab هتي ڊولپمينٽ ٽولز جو هڪ مڪمل سيٽ آهي: ورزن ڪنٽرول لاءِ، ٽڪيٽون، ضم ڪرڻ جون درخواستون، هڪ بهترين-ان-ڪلاس CI/CD پائپ لائن، هڪ ڪنٽينر رجسٽري، ۽ هر شيءِ جهڙو. مون اڃا تائين اهڙي ايپليڪيشن ۾ نه آئي آهي جيڪا توهان جي ترقياتي ڪم جي فلو کي منظم ڪرڻ لاء تمام گهڻو پيش ڪري ٿي.
مون کي آٽوميشن پسند آهي، تنهن ڪري مون سکيو ته ڪيئن پينٿيون کي GitLab سان ڳنڍجي ته جيئن GitLab تي مکيه برانچ ڏانهن ڪمٽ ڪيو وڃي Pantheon ۾ بنيادي ترقي واري ماحول ۾. ۽ GitLab تي ضم ڪرڻ جون درخواستون Pantheon ۾ multidev ماحول ۾ ڪوڊ ٺاهي ۽ ترتيب ڏئي سگھن ٿيون.
هن سبق ۾، مان توهان کي ٻڌائيندس ته ڪيئن GitLab ۽ Pantheon جي وچ ۾ ڪنيڪشن قائم ڪجي ۽ توهان جي ورڈپریس ۽ ڊروپل جي ڪم جي فلو کي بهتر بڻائي سگهجي.
يقيناً ممڪن آهي، آئيني GitLab مخزن، پر اسان سڀ ڪجهه پنهنجي هٿن سان ڪنداسين جنهن ۾ داخل ٿيڻ لاءِ گٽ لاب سي ۽ مستقبل ۾ هن اوزار کي استعمال نه رڳو لڳائڻ لاء.
تعارف
ھن پوسٽ لاءِ، توھان کي سمجھڻ جي ضرورت آھي ته Pantheon ھر سائيٽ کي ٽوڙي ٿو ٽن عناصر ۾: ڪوڊ، ڊيٽابيس، ۽ فائلون.
ڪوڊ ۾ سي ايم ايس فائلون شامل آهن جهڙوڪ ورڈپریس ڪور، پلگ ان، ۽ موضوعات. اهي فائلون منظم ٿيل آهن Git repositories، Pantheon پاران ميزباني ڪئي وئي، مطلب ته اسان Git سان گڏ GitLab کان Pantheon تائين ڪوڊ ترتيب ڏئي سگھون ٿا.
Pantheon ۾ فائلون ميڊيا فائلون آھن، اھو آھي، سائيٽ لاء تصويرون. عام طور تي اهي صارفين طرفان اپلوڊ ڪيا ويا آهن ۽ Git انهن کي نظر انداز ڪري ٿو.
اسان ھاڻي پھريون ٻه قدم مڪمل ڪنداسين: اچو ته ssh-keygen سان مقامي طور تي ھڪڙو نئون SSH ڪيئي جوڙو ٺاھيون ۽ پرائيويٽ ڪيئي کي پروجيڪٽ ۾ متغير طور شامل ڪريو.
اچو ته فائل اڃا تائين انجام نه ڏيو .gitlab-ci.yml، پوءِ توھان کي ان ۾ ٻيو ڪجھ شامل ڪرڻو پوندو.
هاڻي اسان پنجون قدم انجام ڏيون ٿا ۽ شامل ڪريو عوامي ڪنجي جيڪا توهان پهرين قدم ۾ ٺاهي آهي انهن خدمتن ۾ جيڪي توهان کي تعميراتي ماحول ۾ رسائي جي ضرورت آهي.
اسان جي صورت ۾، اسان GitLab کان Pantheon تائين رسائي چاهيون ٿا. اسان Pantheon دستاويز ۾ ڏنل هدايتن تي عمل ڪريو Pantheon ۾ SSH ڪيچ شامل ڪرڻ ۽ هن قدم کي انجام ڏيو.
اچو ته ڪجھ وڌيڪ ماحولياتي متغيرات کي ترتيب ڏيو. پهريون نالو PANTHEON_SITE. ان جو قدر توهان جي مشين تي Pantheon سائيٽ جو نالو آهي.
مشين تي نالو Git ڪمانڊ سان ڪلون جي آخر ۾ درج ٿيل آھي. توھان اڳ ۾ ئي سائيٽ کي مقامي طور تي ڪلون ڪيو آھي، تنھنڪري اھو ھوندو مقامي ريپوزٽري ڊاريڪٽري جو نالو.
اڳيون، اچو ته ماحول جي متغير کي ترتيب ڏيو PANTHEON_GIT_URL. هي آهي Git مخزن جو URL Pantheon سائيٽ لاءِ جيڪو اسان اڳ ۾ ئي استعمال ڪيو آهي.
صرف SSH مخزن URL داخل ڪريو، بغير git clone ۽ آخر ۾ مشين تي سائيٽ جو نالو.
جيڪو اسان شروعاتي طور تي GitLab CI سان ڪري رهيا آهيون اهو بلڪل ساڳيو آهي جيڪو اسان ماضي ۾ Git repositories سان ڪيو آهي. پر هن ڀيري، اچو ته Pantheon مخزن کي ٻئي ريموٽ گٽ ماخذ جي طور تي شامل ڪريو، ۽ پوء ڪوڊ کي دٻايو GitLab کان Pantheon ڏانهن.
هن کي ڪرڻ لاء، اچو ته ترتيب ڏيو اسٽيجdeploy и ڪمdeploy:dev، ڇاڪاڻ ته اسان پينٿون تي ترقي واري ماحول کي ترتيب ڏينداسين. نتيجو فائل .gitlab-ci.yml هن طرح نظر ايندي:
مختلف SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL واقف نظر اچڻ گهرجي - اسان انهن ماحوليات جي متغيرن کي اڳ ۾ ترتيب ڏيون ٿا. انهن متغيرن سان اسان فائل ۾ ويل ويلز استعمال ڪري سگهنداسين .gitlab-ci.yml ڪيترائي ڀيرا، ۽ انهن کي صرف هڪ جڳهه تي اپڊيٽ ڪرڻ جي ضرورت پوندي.
آخرڪار، فائل شامل ڪريو، انجام ڏيو ۽ موڪليو .gitlab-ci.yml GitLab تي.
لڳائڻ جي چڪاس
جيڪڏهن اسان سڀ ڪجهه صحيح ڪيو، اهو ڪم deploy:dev GitLab CI/CD ۾ ڪاميابيءَ سان هلندي ۽ واعدو جمع ڪرايو ويندو .gitlab-ci.yml Pantheon تي. اچو ته هڪ نظر وٺو.
پينٿيون ڏانهن ضم ڪرڻ جي درخواست جا موضوع موڪلي رهيا آهن
multidev تائين رسائي محدود آهي، تنهنڪري هن حصي کي ڇڏي سگهجي ٿو. پر جيڪڏهن توهان وٽ رسائي آهي، توهان GitLab ضم ڪرڻ جي درخواستن مان Pantheon تي ملٽي ڊيو ماحول جي خودڪار تخليق کي ترتيب ڏيڻ سان سنجيدگي سان پيداوار وڌائي سگهو ٿا.
پهرين اچو ته مقامي طور تي استعمال ڪندي هڪ نئين گٽ برانچ ٺاهيو git checkout -b multidev-support. هاڻي اچو ته ٻيهر ڪجهه تبديل ڪريون .gitlab-ci.yml.
مان پينٿيون ماحول جي نالي ۾ ضم ڪرڻ جي درخواست نمبر شامل ڪرڻ پسند ڪريان ٿو. مثال طور، پهرين ضم ڪرڻ جي درخواست آهي mr-1، ٻيون - mr-2 وغيره
ضم ڪرڻ جي درخواست تبديل ٿي، تنهنڪري اسان کي متحرڪ طور تي Pantheon برانچ جا نالا طئي ڪرڻ گهرجن. اهو GitLab تي آسان آهي - توهان کي صرف استعمال ڪرڻ جي ضرورت آهي اڳواٽ بيان ڪيل ماحولياتي متغير.
اسان وٺي سگهون ٿا $CI_MERGE_REQUEST_IIDضم ڪرڻ جي درخواست نمبر بيان ڪرڻ لاءِ. اچو ته هي سڀ ان سان گڏ لاڳو ڪريون عالمي ماحوليات جي متغيرن سان جيڪي اسان اڳ بيان ڪيون آهن ۽ فائل جي آخر ۾ هڪ نئون deploy:multidev task شامل ڪريو. .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ڪلڪ ڪندي ضم ڪرڻ جي درخواست ٺاهيو.
ضم ڪرڻ جي درخواست ٺاهي، اسان ڏسون ٿا ته ڪيئن سي آءِ/سي ڊي ڪم تي عمل ڪيو وڃي ٿو deploy:multidev.
ڏس، هڪ نئون موضوع پينٿون ڏانهن موڪليو ويو آهي. پر جيڪڏهن اسان Pantheon سائيٽ ڊيش بورڊ تي ملٽي ڊيو سيڪشن تي وڃون ٿا، اسان اتي نئون ماحول نه ڏسنداسين.
اسان هڪ multidev ماحول پيدا ڪيو آهي، هاڻي اچو ته واپس وڃو GitLab ۽ سيڪشن کي ڏسو آپريشنز > ماحول. اسان لاءِ داخلائون ڏسندا dev и mr-1.
اھو آھي ڇو جو اسان ھڪڙو داخلا شامل ڪيو آھي environment نالي سان name и url CI/CD ڪمن ۾. جيڪڏهن اسان کليل ماحول جي آئڪن تي ڪلڪ ڪندا آهيون، اسان کي Pantheon تي multidev ماحول جي URL ڏانهن ورتو ويندو.
Multidev جي تخليق کي خودڪار ڪريو
اصولي طور تي، توھان ھتي روڪي سگھوٿا ۽ صرف ياد رکو ته ھر ھڪ ضم جي درخواست لاءِ ملٽي ڊيو ماحول ٺاھيو، پر اھو عمل خودڪار ٿي سگھي ٿو.
Pantheon وٽ ڪمانڊ لائن ٽول آھي ٽرمين، جتي توهان خودڪار طريقي سان پليٽ فارم سان ڪم ڪري سگهو ٿا. ٽرمينس توهان کي ڪمانڊ لائن مان ملٽي ڊيو ماحول ٺاهڻ جي اجازت ڏئي ٿو - لاءِ مثالي گٽ لاب سي.
ھن کي جانچڻ لاءِ اسان کي ھڪ نئين ضم ٿيڻ جي درخواست جي ضرورت آھي. اچو ته استعمال ڪندي هڪ نئين شاخ ٺاهي git checkout -b auto-multidev-creation.
GitLab CI/CD ڪمن ۾ ٽرمينس استعمال ڪرڻ لاءِ، توھان کي ٽرمينس سان تصديق ڪرڻ لاءِ مشين ٽوڪن جي ضرورت آھي ۽ ٽرمينس سان ھڪڙي ڪنٽينر تصوير.
هڪ Pantheon مشين ٽوڪن ٺاهڻ، ان کي محفوظ جاءِ تي محفوظ ڪريو ۽ ان کي نالو سان گڏ GitLab ۾ عالمي ماحول جي متغير طور شامل ڪريو PANTHEON_MACHINE_TOKEN.
جيڪڏهن توهان وساري ڇڏيو ته GitLab ماحوليات جي تبديلين کي ڪيئن شامل ڪيو وڃي، واپس وڃو جتي اسان وضاحت ڪئي آهي PANTHEON_SITE.
ٽرمينس سان هڪ ڊڪر فائل ٺاهڻ
جيڪڏهن توهان Docker استعمال نٿا ڪريو يا فائلون پسند نه ڪريو Dockerfileمنهنجي تصوير وٺو registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ۽ هن سيڪشن کي ڇڏي ڏيو.
ٽرمينس هڪ PHP ڪمانڊ لائن اوزار آهي، تنهنڪري اچو ته PHP تصوير سان شروع ڪريون. مان ڪمپوزر ذريعي ٽرمينس انسٽال ڪري رهيو آهيان، سو استعمال ڪندس سرڪاري ڊڪر ڪمپوزر تصوير. اسان ٺاهيندا آهيون 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
رسم الخط هڪ خانگي ڊاريڪٽري ۾ آهي ۽ Pantheon تائين ويب رسائي جي اجازت نٿو ڏئي. اسان وٽ اسان جي multidev منطق لاءِ اسڪرپٽ آهي. اچو ته هاڻي سيڪشن کي اپڊيٽ ڪريو deploy:multidev فائل .gitlab-ci.ymlتنهنڪري اهو هن طرح ظاهر ٿئي ٿو: