ProHoster > Օրագիր > Վարչակազմը > Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը
Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը
Պանթեոնում մեր հյուր մշակողների գործիքների ստեղծողը խոսում է այն մասին, թե ինչպես ավտոմատացնել WordPress-ի տեղակայումները՝ օգտագործելով GitLab CI/CD:
В Պանթեոն Ես աշխատում եմ ծրագրավորողների հետ հարաբերություններում, ուստի ես միշտ փնտրում եմ նոր ուղիներ՝ օգնելու WordPress-ի և Drupal-ի ծրագրավորողներին լուծել ավտոմատացման խնդիրները իրենց աշխատանքային հոսքերում: Դա անելու համար ես սիրում եմ փորձարկել նոր գործիքներ և դրանք համատեղել միմյանց հետ՝ արդյունավետ աշխատելու համար:
Ես հաճախ տեսնում եմ, որ մշակողները պայքարում են մեկ բեմական սերվերի հետ:
Այնքան հաճելի է սպասել, որ ձեր հերթն օգտագործվի միջանկյալ սերվեր կամ հաճախորդներին URL ուղարկել՝ «Նայեք այստեղ, բայց դեռ մի նայեք այստեղ»:
Multidev միջավայրեր - Pantheon-ի հիանալի գործիքներից մեկը - լուծում է այս խնդիրը, քանի որ դրանց միջոցով դուք կարող եք միջավայրեր ստեղծել Git մասնաճյուղերի համար ըստ պահանջի: Յուրաքանչյուր multidev միջավայր ունի իր URL-ը և տվյալների բազան, այնպես որ ծրագրավորողները կարող են հանգիստ աշխատել, ստուգել որակը և ստանալ հավանություն՝ առանց միմյանց ոտք դնելու:
Բայց Պանթեոնը չունի տարբերակների վերահսկման կամ շարունակական ինտեգրման և տեղակայման գործիքներ (CI/CD): Բայց դա ճկուն հարթակ է, որի հետ դուք կարող եք ինտեգրել ցանկացած գործիք:
Ես նաև նկատեցի, որ թիմերը մշակման համար օգտագործում են որոշակի գործիքներ, իսկ հավաքման և տեղակայման համար՝ տարբեր:
Օրինակ, նրանք ունեն տարբեր գործիքներ տարբերակի վերահսկման և CI/CD-ի համար: Կոդը խմբագրելու և խնդիրները ախտորոշելու համար պետք է պտտվել և անցնել գործիքների միջև:
On Գիտլաբը կա զարգացման գործիքների ամբողջական փաթեթ՝ տարբերակի վերահսկման, տոմսերի, միաձուլման հարցումների, դասի լավագույն CI/CD խողովակաշարի, կոնտեյների ռեեստրի և նման ամեն ինչի համար: Ես դեռ չեմ հանդիպել այնպիսի հավելվածի, որն այդքան շատ բան կառաջարկի կառավարել ձեր զարգացման աշխատանքային հոսքը:
Ես սիրում եմ ավտոմատացումը, ուստի ես սովորեցի, թե ինչպես միացնել Pantheon-ը GitLab-ին, որպեսզի GitLab-ի հիմնական մասնաճյուղի պարտավորությունները տեղակայվեն Պանթեոնի հիմնական զարգացման միջավայրում: Իսկ GitLab-ի միաձուլման հարցումները կարող են ստեղծել և տեղակայել կոդը Պանթեոնի բազմածրագրային միջավայրերում:
Այս ձեռնարկում ես ձեզ կպատմեմ, թե ինչպես կարելի է կապ ստեղծել GitLab-ի և Pantheon-ի միջև և օպտիմալացնել ձեր WordPress-ի և Drupal-ի աշխատանքային հոսքը:
Իհարկե հնարավոր է, հայելային GitLab պահոց, բայց մենք ամեն ինչ կանենք մեր ձեռքերով խորանալու համար GitLab CI և ապագայում օգտագործեք այս գործիքը ոչ միայն տեղակայման համար:
Ներածություն
Այս գրառման համար դուք պետք է հասկանաք, որ Պանթեոնը բաժանում է յուրաքանչյուր կայք երեք տարրի՝ կոդ, տվյալների բազա և ֆայլեր:
Կոդը ներառում է CMS ֆայլեր, ինչպիսիք են WordPress միջուկը, պլագինները և թեմաները: Այս ֆայլերը կառավարվում են Git պահոցներ, որը հյուրընկալվել է Pantheon-ի կողմից, ինչը նշանակում է, որ մենք կարող ենք GitLab-ից կոդ տեղակայել Պանթեոն Git-ի միջոցով:
Պանթեոնի ֆայլերը մեդիա ֆայլեր են, այսինքն՝ պատկերներ կայքի համար: Սովորաբար դրանք վերբեռնվում են օգտվողների կողմից, և Git-ը անտեսում է դրանք:
Պանթեոնի և GitLab-ի իմ նախագիծը կոչվում է pantheon-gitlab-blog-demo. Նախագծի անվանումը պետք է լինի եզակի: Այստեղ մենք աշխատելու ենք WordPress կայքի հետ: Դուք կարող եք վերցնել Drupal-ը, բայց դուք պետք է որոշ բաներ փոխեք:
Եթե ձեր ձեռքերը քոր են գալիս ինչ-որ բան փոխելու համար, օրինակ՝ հեռացնել կամ ավելացնել պլագիններ, համբերատար եղեք: Կայքը դեռ միացված չէ GitLab-ին, և մենք ցանկանում ենք, որ կոդի բոլոր փոփոխություններն անցնեն GitLab-ի միջոցով:
Երբ մենք տեղադրենք WordPress-ը, վերադարձեք Pantheon կայքի վահանակ և փոխեք զարգացման ռեժիմը Git-ի:
Նախնական հանձնում GitLab-ում
Այժմ դուք պետք է փոխանցեք WordPress-ի սկզբնական կոդը Pantheon կայքից GitLab: Դա անելու համար մենք տեղական կլոնավորում ենք կոդը Pantheon կայքի Git պահոցից, այնուհետև այն ուղարկում ենք GitLab պահոց:
Հիմա փոխենք git remote originՊանթեոնի փոխարեն մատնացույց անել GitLab-ին: Դա կարելի է անել командой git remote.
Եկեք գնանք GitLab նախագիծ և պատճենենք պահեստի URL-ը Ծրագրի մանրամասների էջում գտնվող Clone բացվող ցանկից: Եկեք ընտրենք Clone with SSH տարբերակը, քանի որ մենք արդեն կարգավորել ենք SSH ստեղնը։
By default git remote կոդի պահեստի տեղական պատճենի համար - origin. Սա կարող է փոխվել գ git remote set-url origin [URL репозитория GitLab], որտեղ փակագծերի փոխարեն մուտքագրում ենք իրական URL-ը։
Ի վերջո, մենք սկսում ենք git push origin master --forceWordPress կոդը Pantheon-ից GitLab մղելու համար:
«Force» տարբերակը անհրաժեշտ է միայն մեկ անգամ: Հետո թիմերում git push այն GitLab-ում չի լինի:
Հավատարմագրերի և փոփոխականների կարգավորում
Հիշո՞ւմ եք, թե ինչպես ենք մենք SSH բանալի ավելացրել տեղական մակարդակում՝ Pantheon և GitLab մուտք գործելու համար: SSH նշանը կարող է օգտագործվել GitLab-ին և Pantheon-ին թույլատրելու համար:
Այժմ մենք կավարտենք առաջին երկու քայլերը. Եկեք ստեղծենք նոր SSH բանալիների զույգ տեղական ssh-keygen-ի հետ և ավելացնենք անձնական բանալին որպես փոփոխական նախագծին:.
Հետո մենք կհարցնենք SSH_PRIVATE_KEY ինչպես GitLab CI/CD միջավայրի փոփոխական նախագծի կարգավորումներում:
Երրորդ և չորրորդ քայլերում մենք կստեղծենք ֆայլ .gitlab-ci.yml այսպիսի բովանդակությամբ.
Եկեք դեռ ֆայլը չհանձնենք .gitlab-ci.yml, ապա ձեզ հարկավոր կլինի դրան այլ բան ավելացնել:
Այժմ մենք կատարում ենք հինգերորդ քայլը և ավելացրեք հանրային բանալին, որը դուք ստեղծել եք առաջին քայլում, այն ծառայություններին, որոնց մուտքի կարիք ունեք build միջավայրում.
Մեր դեպքում մենք ցանկանում ենք մուտք գործել Պանթեոն GitLab-ից: Մենք հետևում ենք Պանթեոնի փաստաթղթի հրահանգներին SSH բանալի ավելացնելով Պանթեոնին և կատարեք այս քայլը:
Հիշեք՝ մասնավոր SSH-ը գտնվում է GitLab-ում, բաց SSH-ը՝ Պանթեոնում:
Եկեք ստեղծենք ևս մի քանի միջավայրի փոփոխականներ: Առաջինը կոչվում է 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-ից կոդը մղենք Պանթեոն:
Դա անելու համար եկեք կարգավորենք փուլով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-ում և կներկայացնի commit .gitlab-ci.yml Պանթեոնում։ Եկեք նայենք:
Միաձուլման հարցումների թեմաների ուղարկում Պանթեոն
Այստեղ մենք կօգտագործենք իմ սիրելի Պանթեոնի հնարավորությունը − multidev, որտեղ դուք կարող եք ստեղծել լրացուցիչ Pantheon միջավայրեր Git մասնաճյուղերի համար ըստ պահանջի:
Multidev-ի հասանելիությունը սահմանափակ է, այնպես որ այս բաժինը կարելի է բաց թողնել: Բայց եթե մուտք ունեք, կարող եք լրջորեն բարձրացնել արտադրողականությունը՝ կարգավորելով Pantheon-ում բազմածրագրային միջավայրերի ավտոմատ ստեղծումը GitLab-ի միաձուլման հարցումներից:
Նախ, եկեք ստեղծենք նոր 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, միայն մասնաճյուղն է ուղարկվում Պանթեոն, ոչ թե master.
Մենք ավելացրել և հանձնել ենք թարմացված ֆայլը .gitlab-ci.yml, և այժմ եկեք նոր մասնաճյուղ մտցնենք GitLab-ի հետ git push -u origin multidev-support.
Այժմ եկեք ստեղծենք միաձուլման նոր հարցում մասնաճյուղից multidev-supportկտտացնելով Ստեղծեք միաձուլման հարցում.
Միաձուլման հարցում ստեղծելուց հետո մենք նայում ենք, թե ինչպես է կատարվում CI/CD առաջադրանքը deploy:multidev.
Տեսեք, նոր թեմա է ուղարկվել Պանթեոն։ Բայց եթե Pantheon կայքի վահանակի վրա գնանք multidev բաժին, մենք այնտեղ չենք տեսնի նոր միջավայրը:
Եկեք նայենք Git Branches բաժինը:
Արդյունքում մեր շարանը mr-1 հասել է Պանթեոն: Եկեք մի ճյուղից միջավայր ստեղծենք mr-1.
Մենք ստեղծել ենք multidev միջավայր, հիմա վերադառնանք GitLab և նայենք բաժինը Գործողություններ > Շրջակա միջավայրեր. Մենք կտեսնենք մուտքերը dev и mr-1.
Դա պայմանավորված է նրանով, որ մենք ավելացրել ենք գրառում environment Անունով name и url CI/CD առաջադրանքների մեջ: Եթե սեղմենք բաց միջավայրի պատկերակի վրա, մենք կտեղափոխվենք Պանթեոնի multidev միջավայրի URL:
Ավտոմատացրեք multidev-ի ստեղծումը
Սկզբունքորեն, դուք կարող եք կանգ առնել այստեղ և պարզապես հիշել, որ յուրաքանչյուր միաձուլման հարցման համար ստեղծել multidev միջավայր, բայց այս գործընթացը կարող է ավտոմատացված լինել:
Պանթեոնն ունի հրամանի տող գործիք Սահման, որտեղ դուք կարող եք ավտոմատ կերպով աշխատել հարթակի հետ: Terminus-ը թույլ է տալիս հրամանի տողից ստեղծել multidev միջավայրեր՝ իդեալական համար GitLab CI.
Սա փորձարկելու համար մեզ անհրաժեշտ է միաձուլման նոր հարցում: Եկեք ստեղծենք նոր մասնաճյուղ՝ օգտագործելով git checkout -b auto-multidev-creation.
Terminus-ը GitLab CI/CD առաջադրանքներում օգտագործելու համար ձեզ հարկավոր է մեքենայական նշան՝ Terminus-ով իսկորոշման համար և կոնտեյների պատկեր՝ Terminus-ով:
Պանթեոնի մեքենայի նշանի ստեղծում, պահեք այն ապահով վայրում և ավելացրեք այն որպես GitLab-ի գլոբալ միջավայրի փոփոխական՝ անունով PANTHEON_MACHINE_TOKEN.
Եթե մոռացել եք, թե ինչպես ավելացնել GitLab միջավայրի փոփոխականները, վերադարձեք այնտեղ, որտեղ մենք սահմանել ենք PANTHEON_SITE.
Dockerfile-ի ստեղծում Terminus-ով
Եթե դուք չեք օգտագործում Docker-ը կամ չեք սիրում ֆայլեր Dockerfile, վերցրու իմ պատկերը registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest և բաց թողեք այս բաժինը:
GitLab-ն ունի կոնտեյների ռեեստր, որտեղ մենք կարող ենք կառուցել և տեղադրել Dockerfile-ը մեր նախագծի համար: Եկեք ստեղծենք Dockerfile Terminus-ով Pantheon-ի հետ աշխատելու համար:
Terminus-ը PHP հրամանի տող գործիք է, ուստի եկեք սկսենք PHP պատկերից: Ես տեղադրում եմ Terminus-ը Composer-ի միջոցով, ուստի կօգտագործեմ Docker Composer-ի պաշտոնական պատկերը. Մենք ստեղծում ենք 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
Սցենարը գտնվում է մասնավոր գրացուցակում և թույլ չի տալիս վեբ մուտք գործել Պանթեոն. Մենք ունենք սցենար մեր multidev տրամաբանության համար: Այժմ թարմացնենք բաժինը deploy:multidev ֆայլը .gitlab-ci.ymlայնպես որ ստացվի այսպես.
Մենք պետք է համոզվենք, որ մեր առաջադրանքները կատարվում են ստեղծված հատուկ պատկերով, ուստի եկեք ավելացնենք սահմանում image ռեեստրի URL-ից մինչև .gitlab-ci.yml. Արդյունքում մենք ստացանք այսպիսի ֆայլ .gitlab-ci.yml:
Ավելացնել, հանձնել և ուղարկել private/multidev-deploy.sh и .gitlab-ci.yml. Այժմ մենք վերադառնում ենք GitLab և սպասում ենք CI/CD առաջադրանքի ավարտին: Եղեք համբերատար. multidev-ի ստեղծումը կարող է տևել մի քանի րոպե:
Այնուհետև մենք գնում ենք դիտելու Պանթեոնի բազմատեսակ ցուցակը: Ա՜խ հրաշք։ Multidev միջավայր mr-2 արդեն այստեղ:
Ամփոփում
Իմ թիմը շատ ավելի զվարճացավ, երբ մենք սկսեցինք բացել միաձուլման հարցումները և ավտոմատ կերպով ստեղծել միջավայրեր:
GitLab-ի և Pantheon-ի հզոր գործիքների օգնությամբ դուք կարող եք ավտոմատ կերպով GitLab-ը միացնել Պանթեոնին:
Քանի որ մենք օգտագործում ենք GitLab CI/CD, մեր աշխատանքային հոսքը աճելու տեղ կունենա: Ահա մի քանի գաղափար՝ սկսելու համար.
Ավելացրեք կառուցման քայլ:
Ավելացնել ավտոմատացված թեստավորում:
Ավելացրեք առաջադրանք՝ համոզվելու համար, որ կոդերի ստանդարտները համապատասխանում են:
Մենք Պանթեոնում լավ աշխատանք ենք կատարել մեր 2-րդ տարբերակում plugin Terminus build գործիքների համար GitLab-ի աջակցությամբ: Եթե դուք չեք ցանկանում անհանգստանալ յուրաքանչյուր նախագծի համար կարգավորումներով, փորձեք այս փլագինը և օգնեք մեզ փորձարկել v2 բետա տարբերակը: Տերմինուս թիմի համար build:project:create Ձեզ անհրաժեշտ է միայն Pantheon նշան և GitLab նշան: Նա կտեղակայի նմուշային նախագծերից մեկը Composer-ի և ավտոմատացված թեստավորման միջոցով, կստեղծի նոր նախագիծ GitLab-ում՝ նոր Պանթեոնի կայք, և կմիացնի դրանք՝ օգտագործելով շրջակա միջավայրի փոփոխականները և SSH ստեղները:
Հեղինակի մասին
Էնդրյու Թեյլորը գործիքներ է ստեղծում մշակողների համար Պանթեոն.