ProHoster > Блог > Nchịkwa > Otu esi ejikọ GitLab na Pantheon wee kwalite Drupal na WordPress Workflows
Otu esi ejikọ GitLab na Pantheon wee kwalite Drupal na WordPress Workflows
Onye nrụpụta ngwa ngwa ndị ọbịa anyị na Pantheon na-ekwu maka otu esi eme ka WordPress deployment jiri GitLab CI/CD.
В arụsị Ana m arụ ọrụ na mmekọrịta ndị nrụpụta, yabụ m na-achọ ụzọ ọhụụ mgbe niile iji nyere ndị mmepe WordPress na Drupal aka dozie nsogbu akpaaka na usoro ọrụ ha. Iji mee nke a, ọ na-amasị m ịnwale ngwaọrụ ọhụrụ ma jikọta ha na ibe ha iji rụọ ọrụ nke ọma.
M na-ahụkarị ndị mmepe ka ha na otu ihe nkesa na-agbakọ mgba.
Ọ bụ ihe obi ụtọ ichere ka oge gị jiri ihe nkesa etiti ma ọ bụ ziga ndị ahịa URL na ndetu: "Lee ebe a, mana elela ebe a."
Multidev gburugburu - otu n'ime ngwa Pantheon dị mma - na-edozi nsogbu a, n'ihi na site na ha ị nwere ike ịmepụta gburugburu maka alaka Git na-achọ. Gburugburu multidev ọ bụla nwere URL na nchekwa data nke ya, yabụ ndị mmepe nwere ike ịrụ ọrụ nwayọ, lelee ịdị mma ma nweta nkwado na-enweghị isi na mkpịsị ụkwụ ibe ha.
Mana Pantheon enweghị ngwaọrụ maka njikwa ụdị ma ọ bụ ntinye na ntinye na-aga n'ihu (CI/CD). Mana ọ bụ ikpo okwu na-agbanwe agbanwe nke ị nwere ike ijikọ ngwaọrụ ọ bụla.
Achọpụtakwara m na ndị otu na-eji ụfọdụ ngwá ọrụ maka mmepe, na ndị dị iche iche maka mgbakọ na ntinye.
Dịka ọmụmaatụ, ha nwere ngwaọrụ dị iche iche maka njikwa ụdị yana CI/CD. Ị ga-agbagharị gburugburu wee gbanwee n'etiti ngwaọrụ iji dezie koodu na chọpụta nsogbu.
Na GitLab enwere ngwa ọrụ mmepe zuru oke: maka njikwa ụdị, tiketi, ịrịọ arịrịọ, pipeline CI/CD kacha mma, ndekọ akpa, na ihe niile dị otú ahụ. Ahụbeghị m ngwa na-enye ọtụtụ ihe iji jikwaa usoro mmepe gị.
Enwere m mmasị na akpaaka, yabụ amụtara m ka esi jikọọ Pantheon na GitLab ka etinyere na ngalaba isi na GitLab na mpaghara mmepe bụ isi na Pantheon. Na ijikọ arịrịọ na GitLab nwere ike ịmepụta ma bufee koodu na gburugburu multidev na Pantheon.
N'ime nkuzi a, a ga m ejegharị gị ka esi melite njikọ n'etiti GitLab na Pantheon wee kwalite ọrụ WordPress na Drupal gị.
N'ezie ọ ga-ekwe omume, enyo GitLab ebe nchekwa, mana anyị ga-eji aka anyị mee ihe niile iji banye GitLab CI na n'ọdịnihu na-eji ngwá ọrụ a ọ bụghị naanị maka ntinye.
Okwu Mmalite
Maka ọkwa a, ịkwesịrị ịghọta na Pantheon na-agbaji saịtị ọ bụla n'ime ihe atọ: koodu, nchekwa data, na faịlụ.
Koodu ahụ gụnyere faịlụ CMS dị ka isi WordPress, plugins, na gburugburu. A na-ejikwa faịlụ ndị a na Git ebe nchekwa, nke Pantheon kwadoro, nke pụtara na anyị nwere ike ibuga koodu si GitLab gaa Pantheon na Git.
Faịlụ dị na Pantheon bụ faịlụ mgbasa ozi, ya bụ, onyonyo maka saịtị ahụ. Ndị ọrụ na-ebugo ya na Git na-eleghara ha anya.
A na-akpọ ọrụ m na Pantheon na GitLab pantheon-gitlab-blog-demo. Aha oru ngo ga-abụ ihe pụrụ iche. N'ebe a, anyị ga-arụ ọrụ na saịtị WordPress. Ị nwere ike were Drupal, mana ị ga-achọ ịgbanwe ihe ụfọdụ.
Ọ bụrụ na aka gị na-afụ ụfụ ịgbanwe ihe, dịka ọmụmaatụ, wepụ ma ọ bụ tinye plugins, nwee ndidi. Ejikọtabeghị saịtị ahụ na GitLab, anyị chọrọ ka mgbanwe koodu niile gafere GitLab.
Ozugbo anyị wụnye WordPress, laghachi na dashboard webụsaịtị Pantheon wee gbanwee ọnọdụ mmepe na Git.
Nkwenye mbụ na GitLab
Ugbu a ịkwesịrị ịnyefe koodu WordPress mbụ site na saịtị Pantheon gaa GitLab. Iji mee nke a, anyị na-emechi koodu ahụ site na ebe nchekwa Git nke saịtị Pantheon na mpaghara, wee ziga ya na ebe nchekwa GitLab.
Ugbu a, ka anyị gbanwee git remote originiji rụtụ aka na GitLab kama Pantheon. Enwere ike ime ya командой git remote.
Ka anyị gaa na GitLab oru ngo ma detuo URL ebe nchekwa site na Clone dropdown na ibe nkọwa ọrụ. Ka anyị họrọ Clone nwere nhọrọ SSH, n'ihi na anyị ahazila igodo SSH.
ndabara git remote maka nnomi mpaghara ebe nchekwa koodu - origin. Enwere ike ịgbanwe nke a c git remote set-url origin [URL репозитория GitLab], ebe kama brackets anyị na-abanye n'ezie URL.
N'ikpeazụ, anyị na-amalite git push origin master --forceịkwanye koodu WordPress site na Pantheon gaa GitLab.
Nhọrọ -force dị naanị otu ugboro. Mgbe ahụ na otu git push ọ gaghị adị na GitLab.
Ịtọlite nzere na mgbanwe
Cheta otu anyị siri tinye igodo SSH na mpaghara ịbanye na Pantheon na GitLab? Enwere ike iji akara SSH iji nye ikike GitLab na Pantheon.
Ugbu a, anyị ga-emecha nzọụkwụ abụọ mbụ: Ka anyị mepụta ụzọ igodo SSH ọhụrụ na mpaghara yana ssh-keygen wee tinye igodo nzuzo dị ka mgbanwe na ọrụ ahụ..
Mgbe ahụ, anyị ga-ajụ SSH_PRIVATE_KEY otú GitLab CI/CD na-agbanwe gburugburu ebe obibi na ntọala oru ngo.
Na usoro nke atọ na nke anọ, anyị ga-emepụta faịlụ .gitlab-ci.yml nwere ọdịnaya dị ka nke a:
Ka anyị ghara itinye faịlụ ahụ .gitlab-ci.yml, mgbe ahụ, ị ga-achọ ịgbakwunye ihe ọzọ na ya.
Ugbu a, anyị na-eme nke ise nzọụkwụ na tinye igodo ọha nke ị mepụtara na nzọụkwụ mbụ na ọrụ ndị ịchọrọ ịnweta na gburugburu ebe a na-ewu ụlọ.
N'ọnọdụ anyị, anyị chọrọ ịnweta Pantheon site na GitLab. Anyị na-agbaso ntuziaka dị na akwụkwọ Pantheon na na-agbakwunye igodo SSH na Pantheon ma mee usoro a.
Cheta: SSH nkeonwe dị na GitLab, mepere SSH dị na Pantheon.
Ka anyị melite mgbanwe gburugburu ebe obibi ole na ole. A na-akpọ nke mbụ PANTHEON_SITE. Uru ya bụ aha saịtị Pantheon dị na igwe gị.
Edepụtara aha dị na igwe na njedebe nke Clone nwere iwu Git. Ị kpọchiela saịtị ahụ na mpaghara, yabụ nke a ga-abụ aha ndekọ ndekọ aha mpaghara.
Ọzọ, ka anyị guzobe mgbanwe gburugburu ebe obibi PANTHEON_GIT_URL. Nke a bụ URL ebe nchekwa Git maka saịtị Pantheon nke anyị jirilarị.
Tinye naanị URL ebe nchekwa SSH, na-enweghị git clone na aha saịtị na igwe na njedebe.
Phew. Emeela nke ahụ, ugbu a anyị nwere ike mechaa faịlụ anyị .gitlab-ci.yml.
Mepụta ọrụ mbugharị
Ihe anyị ga-eme na mbụ GitLab CI yiri ihe anyị mere na ebe nchekwa Git n'oge gara aga. Mana oge a, ka anyị gbakwunye ebe nchekwa Pantheon dị ka isi iyi Git nke abụọ dịpụrụ adịpụ, wee tinye koodu ahụ site na GitLab na Pantheon.
Iji mee nke a, ka anyị hazie ogbodeploy и ọrụdeploy:dev, n'ihi na anyị ga-ebuga na mmepe gburugburu ebe obibi na Pantheon. Faịlụ pụta .gitlab-ci.yml ga-adị ka nke a:
Ihe dịgasị iche iche SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL kwesịrị ịdị ka nke ọma - anyị edobere mgbanwe gburugburu ebe obibi ndị a na mbụ. Site na mgbanwe ndị a anyị ga-enwe ike iji ụkpụrụ dị na faịlụ ahụ .gitlab-ci.yml ọtụtụ oge, na ọ ga-adị mkpa ka emelite ha naanị n'otu ebe.
N'ikpeazụ, tinye, tinye na zipu faịlụ .gitlab-ci.yml na GitLab.
Na-enyocha ntinye
Ọ bụrụ na anyị mere ihe niile n'ụzọ ziri ezi, ọrụ deploy:dev ga-agba ọsọ nke ọma na GitLab CI/CD wee nyefee nkwa .gitlab-ci.yml na Pantheon. Ka anyị lee anya.
Na-eziga eriri arịrịọ njikọ na Pantheon
N'ebe a, anyị ga-eji njirimara Pantheon kachasị amasị m - multidev, ebe ị nwere ike ịmepụta mgbakwunye Pantheon maka alaka Git na-achọ.
Ịnweta multidev nwere oke, yabụ enwere ike ịwụpụ ngalaba a. Mana ọ bụrụ na ị nwere ohere, ị nwere ike ịbawanye nrụpụta nke ukwuu site na ịtọlite akpaaka nke gburugburu multidev na Pantheon sitere na arịrịọ njikọ GitLab.
Ka anyị buru ụzọ mee alaka Git ọhụrụ na mpaghara na-eji git checkout -b multidev-support. Ugbu a, ka anyị gbanwee ihe ọzọ na .gitlab-ci.yml.
Ọ na-amasị m itinye nọmba arịrịọ njikọ na aha gburugburu Pantheon. Dịka ọmụmaatụ, arịrịọ njikọ mbụ bụ mr-1, nke abụọ - mr-2 wdg.
Anyị nwere ike were $CI_MERGE_REQUEST_IIDiji kọwapụta nọmba ịrịọ arịrịọ. Ka anyị tinye ihe a niile yana mgbanwe mgbanwe gburugburu ụwa anyị kọwapụtara na mbụ wee tinye mgbakwunye ọhụrụ: ọrụ multitidev na njedebe nke faịlụ ahụ. .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
Ọ ga-adị ka ọrụ anyị deploy:dev, naanị alaka ụlọ ọrụ na-eziga na Pantheon, ọ bụghị ka master.
Anyị agbakwunyela ma nyefee faịlụ emelitere .gitlab-ci.yml, ma ugbu a, ka anyị jiri ya were kwanye alaka ọhụrụ na GitLab git push -u origin multidev-support.
Ugbu a, ka anyị mepụta arịrịọ njikọta ọhụrụ site na alaka ụlọ ọrụ multidev-supportsite na ịpị Mepụta arịrịọ njikọ.
N'ịbụ onye mepụtara arịrịọ njikọ, anyị na-ele anya ka esi arụ ọrụ CI/CD deploy:multidev.
Lee, ezipula eri ọhụrụ na Pantheon. Mana ọ bụrụ na anyị gaa na ngalaba multidev na dashboard saịtị Pantheon, anyị agaghị ahụ ebe ọhụrụ ebe ahụ.
Ka anyị leba anya na ngalaba Git Branches.
N'ihi ya, eri anyị mr-1 gaa na Pantheon. Ka anyị mepụta gburugburu site na alaka ụlọ ọrụ mr-1.
Anyị ekepụtala gburugburu multidev, ugbu a ka anyị laghachi na GitLab wee lelee ngalaba ahụ Ọrụ > Gburugburu. Anyị ga-ahụ ndenye maka dev и mr-1.
Nke a bụ n'ihi na anyị gbakwunyere ntinye environment N'aha name и url n'ime ọrụ CI/CD. Ọ bụrụ na anyị pịa akara ngosi gburugburu mepere emepe, a ga-akpọrọ anyị na URL nke multidev gburugburu na Pantheon.
Mepụta ihe okike nke multidev
Na ụkpụrụ, ị nwere ike ịkwụsị ebe a ma cheta naanị ịmepụta ọnọdụ multidev maka arịrịọ ọ bụla jikọrọ ọnụ, mana usoro a nwere ike ịmegharị ya.
Pantheon nwere ngwá ọrụ ahịrị iwu Nkwụsị, ebe ị nwere ike ịrụ ọrụ na ikpo okwu na-akpaghị aka. Terminus na-enye gị ohere ịmepụta gburugburu multidev site na ahịrị iwu - dị mma maka GitLab CI.
Anyị chọrọ arịrịọ njikọta ọhụrụ iji nwalee nke a. Ka anyị mepụta alaka ọhụrụ site na iji git checkout -b auto-multidev-creation.
Iji jiri Terminus na ọrụ GitLab CI/CD, ịchọrọ akara igwe maka nyocha ya na Terminus yana onyonyo akpa nwere Terminus.
Ịmepụta akara igwe Pantheon, Chekwaa ya na ebe nchekwa ma tinye ya dị ka mgbanwe gburugburu ụwa na GitLab na aha PANTHEON_MACHINE_TOKEN.
Ọ bụrụ na ị chefuru otu esi etinye mgbanwe gburugburu GitLab, laghachi azụ n'ebe anyị kọwara PANTHEON_SITE.
Mepụta Dockerfile na Terminus
Ọ bụrụ na ị naghị eji Docker ma ọ bụ na-amasịghị faịlụ Dockerfile, were foto m registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ma hapụ ngalaba a.
GitLab nwere ndekọ akpa, ebe anyị nwere ike iwulite ma tinye Dockerfile maka ọrụ anyị. Ka anyị mepụta Dockerfile na Terminus ka anyị na Pantheon rụọ ọrụ.
Terminus bụ ngwa ahịrị ahịrị iwu PHP, yabụ ka anyị jiri onyonyo PHP malite. Ana m etinye Terminus site na Onye na-ede ihe, yabụ m ga-eji onyonyo Docker Composer. Anyị na-eke Dockerfile n'ime ndekọ ndekọ aha mpaghara nwere ọdịnaya ndị a:
# 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"
Soro ntuziaka maka ikpokọta na izipu onyonyo site na ngalaba Wulite ma tinye onyonyo в akwụkwọ ndekọ akpaịnakọta onyonyo site na Dockerfile ma tinye ya na GitLab.
Mepee ngalaba Ndebanye aha na oru GitLab. Ọ bụrụ na ihe niile gara dịka atụmatụ si dị, onyinyo anyị ga-adị ebe ahụ. Dee njikọ na mkpado onyonyo - anyị chọrọ ya maka faịlụ ahụ .gitlab-ci.yml.
Nkebi script na nsogbu deploy:multidev na-amalite itolite, yabụ ka anyị bugharịa ya na faịlụ dị iche. Mepụta faịlụ ọhụrụ 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
Edemede a dị na ndekọ nkeonwe yana anaghị ekwe ka ịnweta weebụ Pantheon. Anyị nwere edemede maka mgbagha multidev anyị. Ka anyị melite ngalaba ugbu a deploy:multidev faịlụ .gitlab-ci.ymlnke mere na ọ ga-adị ka nke a:
Anyị kwesịrị ijide n'aka na a na-arụ ọrụ anyị na foto omenala emepụtara, yabụ ka anyị tinye nkọwa image site URL ndekọ gaa na .gitlab-ci.yml. N'ihi ya, anyị mechiri faịlụ dị ka nke a .gitlab-ci.yml:
Tinye, tinye na zipu private/multidev-deploy.sh и .gitlab-ci.yml. Ugbu a, anyị laghachi na GitLab ma chere ka ọrụ CI/CD rụchaa. Nwee ndidi: multidev nwere ike were nkeji ole na ole iji mepụta.
Mgbe ahụ, anyị na-aga leba anya na ndepụta multidev na Pantheon. Oh ebube! Multidev gburugburu ebe obibi mr-2 ugbua ebe a.
nkwubi
Ndị otu m nwere ọtụtụ ihe ọchị mgbe anyị malitere imepe arịrịọ njikọ na imepụta gburugburu na-akpaghị aka.
Site na ngwaọrụ dị ike nke GitLab na Pantheon, ị nwere ike jikọọ GitLab na Pantheon na-akpaghị aka.
Ebe anyị na-eji GitLab CI/CD, usoro ọrụ anyị ga-enwe ohere itolite. Nke a bụ echiche ole na ole iji malite:
Anyị na Pantheon emeela ezigbo ọrụ na ụdị 2 nke anyị ngwa mgbakwunye maka ngwa nrụpụta Terminus na nkwado GitLab. Ọ bụrụ na ịchọghị inye nsogbu na ntọala maka ọrụ ọ bụla, nwaa ngwa mgbakwunye a wee nyere anyị aka nwalee beta v2. Maka ndị otu Terminus build:project:create Ị chọrọ naanị akara ngosi Pantheon na akara GitLab. Ọ ga-ebuga otu n'ime ọrụ nlele ya na Onye na-ede akwụkwọ na nnwale akpaaka, mepụta ọrụ ọhụrụ na GitLab, saịtị Pantheon ọhụrụ, wee jikọọ ha site na iji mgbanwe gburugburu ebe obibi na igodo SSH.
Banyere onye edemede
Andrew Taylor na-emepụta ngwaọrụ maka ndị mmepe na arụsị.