Ինչպես միացնել 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-ը անտեսում է դրանք:

Ստեղծեք անվճար հաշիվ, իմացեք ավելին Պանթեոնի աշխատանքի ընթացքը կամ գրանցվեք ցուցադրության համար pantheon.io-ում:

Ենթադրություններ

Պանթեոնի և GitLab-ի իմ նախագիծը կոչվում է pantheon-gitlab-blog-demo. Նախագծի անվանումը պետք է լինի եզակի: Այստեղ մենք աշխատելու ենք WordPress կայքի հետ: Դուք կարող եք վերցնել Drupal-ը, բայց դուք պետք է որոշ բաներ փոխեք:

Ես կօգտագործեմ Git հրամանի տողև դուք կարող եք աշխատել գրաֆիկական ինտերֆեյս, եթե ուզում ես։

Ստեղծեք նախագիծ

Նախ, եկեք ստեղծենք GitLab նախագիծ (այս մասին ավելի ուշ կանդրադառնանք):

Հիմա Պանթեոնում WordPress կայք ստեղծելով. Այնուհետև մենք տեղադրում ենք WordPress-ը կայքի վահանակի համար:

Եթե ​​ձեր ձեռքերը քոր են գալիս ինչ-որ բան փոխելու համար, օրինակ՝ հեռացնել կամ ավելացնել պլագիններ, համբերատար եղեք: Կայքը դեռ միացված չէ GitLab-ին, և մենք ցանկանում ենք, որ կոդի բոլոր փոփոխություններն անցնեն GitLab-ի միջոցով:

Երբ մենք տեղադրենք WordPress-ը, վերադարձեք Pantheon կայքի վահանակ և փոխեք զարգացման ռեժիմը Git-ի:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Նախնական հանձնում GitLab-ում

Այժմ դուք պետք է փոխանցեք WordPress-ի սկզբնական կոդը Pantheon կայքից GitLab: Դա անելու համար մենք տեղական կլոնավորում ենք կոդը Pantheon կայքի Git պահոցից, այնուհետև այն ուղարկում ենք GitLab պահոց:

Այն ավելի հեշտ և անվտանգ դարձնելու համար, ավելացնել SSH բանալի Pantheon-ում և մենք ստիպված չենք լինի գաղտնաբառ մուտքագրել ամեն անգամ, երբ մենք կլոնավորում ենք Pantheon Git պահեստը: Միևնույն ժամանակ արդեն ավելացնել SSH բանալի GitLab-ին.

Դա անելու համար կլոնավորեք Pantheon-ի վեբ կայքը՝ պատճենելով հրամանը վեբ կայքի վահանակի Clone with Git դաշտից:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը
Եթե ​​օգնության կարիք ունեք, կարդացեք փաստաթղթերը սկսելով Git for Pantheon-ի հետ.

Հիմա փոխենք git remote originՊանթեոնի փոխարեն մատնացույց անել GitLab-ին: Դա կարելի է անել командой git remote.

Եկեք գնանք GitLab նախագիծ և պատճենենք պահեստի URL-ը Ծրագրի մանրամասների էջում գտնվող Clone բացվող ցանկից: Եկեք ընտրենք Clone with SSH տարբերակը, քանի որ մենք արդեն կարգավորել ենք SSH ստեղնը։

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

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-ին թույլատրելու համար:

GitLab-ն ունի հիանալի փաստաթղթեր: Եկեք տեսնենք SSH ստեղների վերաբերյալ բաժինը փաստաթղթում Docker կատարողն օգտագործելիս GitLab CI/CD-ով SSH ստեղների օգտագործման մասին.

Այժմ մենք կավարտենք առաջին երկու քայլերը. Եկեք ստեղծենք նոր SSH բանալիների զույգ տեղական ssh-keygen-ի հետ և ավելացնենք անձնական բանալին որպես փոփոխական նախագծին:.

Հետո մենք կհարցնենք SSH_PRIVATE_KEY ինչպես GitLab CI/CD միջավայրի փոփոխական նախագծի կարգավորումներում:
Երրորդ և չորրորդ քայլերում մենք կստեղծենք ֆայլ .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, ապա ձեզ հարկավոր կլինի դրան այլ բան ավելացնել:

Այժմ մենք կատարում ենք հինգերորդ քայլը և ավելացրեք հանրային բանալին, որը դուք ստեղծել եք առաջին քայլում, այն ծառայություններին, որոնց մուտքի կարիք ունեք build միջավայրում.

Մեր դեպքում մենք ցանկանում ենք մուտք գործել Պանթեոն GitLab-ից: Մենք հետևում ենք Պանթեոնի փաստաթղթի հրահանգներին SSH բանալի ավելացնելով Պանթեոնին և կատարեք այս քայլը:

Հիշեք՝ մասնավոր SSH-ը գտնվում է GitLab-ում, բաց SSH-ը՝ Պանթեոնում:

Եկեք ստեղծենք ևս մի քանի միջավայրի փոփոխականներ: Առաջինը կոչվում է PANTHEON_SITE: Դրա արժեքը ձեր մեքենայի Pantheon կայքի անվանումն է:

Մեքենայի անունը նշված է Clone with Git հրամանի վերջում: Դուք արդեն կլոնավորել եք կայքը տեղական մակարդակում, ուստի սա կլինի տեղական պահեստի գրացուցակի անունը:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Հաջորդը, եկեք կարգավորենք շրջակա միջավայրի փոփոխականը 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 կունենա հետևյալ տեսքը.

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-ում և կներկայացնի commit .gitlab-ci.yml Պանթեոնում։ Եկեք նայենք:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Միաձուլման հարցումների թեմաների ուղարկում Պանթեոն

Այստեղ մենք կօգտագործենք իմ սիրելի Պանթեոնի հնարավորությունը − 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կտտացնելով Ստեղծեք միաձուլման հարցում.

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Միաձուլման հարցում ստեղծելուց հետո մենք նայում ենք, թե ինչպես է կատարվում CI/CD առաջադրանքը deploy:multidev.

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Տեսեք, նոր թեմա է ուղարկվել Պանթեոն։ Բայց եթե Pantheon կայքի վահանակի վրա գնանք multidev բաժին, մենք այնտեղ չենք տեսնի նոր միջավայրը:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Եկեք նայենք Git Branches բաժինը:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Արդյունքում մեր շարանը mr-1 հասել է Պանթեոն: Եկեք մի ճյուղից միջավայր ստեղծենք mr-1.

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Մենք ստեղծել ենք 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.

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Բաժին 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այնպես որ ստացվի այսպես.

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-ի ստեղծումը կարող է տևել մի քանի րոպե:

Այնուհետև մենք գնում ենք դիտելու Պանթեոնի բազմատեսակ ցուցակը: Ա՜խ հրաշք։ Multidev միջավայր mr-2 արդեն այստեղ:

Ինչպես միացնել GitLab-ը և Pantheon-ը և օպտիմալացնել Drupal-ի և WordPress-ի աշխատանքային հոսքերը

Ամփոփում

Իմ թիմը շատ ավելի զվարճացավ, երբ մենք սկսեցինք բացել միաձուլման հարցումները և ավտոմատ կերպով ստեղծել միջավայրեր:

GitLab-ի և Pantheon-ի հզոր գործիքների օգնությամբ դուք կարող եք ավտոմատ կերպով GitLab-ը միացնել Պանթեոնին:

Քանի որ մենք օգտագործում ենք GitLab CI/CD, մեր աշխատանքային հոսքը աճելու տեղ կունենա: Ահա մի քանի գաղափար՝ սկսելու համար.

Տեղեկացրեք մեզ, թե ինչ եք մտածում GitLab-ի, Pantheon-ի և ավտոմատացման մասին:

Հ.Գ. Դուք գիտեի՞ք, որ Terminus-ը, Pantheon-ի հրամանի տող գործիքը, կարող է երկարաձգվել պլագինների միջոցով?

Մենք Պանթեոնում լավ աշխատանք ենք կատարել մեր 2-րդ տարբերակում plugin Terminus build գործիքների համար GitLab-ի աջակցությամբ: Եթե ​​դուք չեք ցանկանում անհանգստանալ յուրաքանչյուր նախագծի համար կարգավորումներով, փորձեք այս փլագինը և օգնեք մեզ փորձարկել v2 բետա տարբերակը: Տերմինուս թիմի համար build:project:create Ձեզ անհրաժեշտ է միայն Pantheon նշան և GitLab նշան: Նա կտեղակայի նմուշային նախագծերից մեկը Composer-ի և ավտոմատացված թեստավորման միջոցով, կստեղծի նոր նախագիծ GitLab-ում՝ նոր Պանթեոնի կայք, և կմիացնի դրանք՝ օգտագործելով շրջակա միջավայրի փոփոխականները և SSH ստեղները:

Հեղինակի մասին

Էնդրյու Թեյլորը գործիքներ է ստեղծում մշակողների համար Պանթեոն.

Source: www.habr.com

Добавить комментарий