Pehea e hoʻohui ai iā GitLab a me Pantheon a hoʻonui i ka Drupal a me WordPress Workflows
ʻO kā mākou mea hana mea hana hoʻokipa malihini ma Pantheon e kamaʻilio e pili ana i ka hoʻokaʻawale ʻana i ka WordPress deployments me ka hoʻohana ʻana iā GitLab CI/CD.
В Pantheon Ke hana nei au i ka pilina o ka mea hoʻomohala, no laila ke ʻimi mau nei au i nā ala hou e kōkua ai i nā mea hoʻomohala WordPress a me Drupal e hoʻoponopono i nā pilikia automation i kā lākou mau kahe hana. No ka hana ʻana i kēia, makemake wau e hoʻokolohua me nā mea hana hou a hui pū kekahi me kekahi e hana pono.
ʻIke pinepine au i nā mea hoʻomohala e hakakā nei me kahi kikowaena staging hoʻokahi.
He mea hauʻoli ia e kali i kou manawa e hoʻohana ai i kahi kikowaena waena a hoʻouna paha i nā mea kūʻai aku i kahi URL me ka memo: "E nānā ma aneʻi, akā mai nānā ʻoe ma aneʻi."
Kaiapuni Multidev - kekahi o nā mea hana Pantheon maikaʻi - hoʻoponopono i kēia pilikia, no ka mea me lākou hiki iā ʻoe ke hana i nā wahi no nā lālā Git ma ke koi. Loaʻa i kēlā me kēia kaiapuni multidev kona URL ponoʻī a me ka waihona, no laila hiki i nā mea hoʻomohala ke hana mālie, nānā i ka maikaʻi, a loaʻa ka ʻae me ka ʻole o ka hehi ʻana i nā manamana wāwae o kekahi.
Akā ʻaʻohe o Pantheon i nā mea hana no ka mana mana a i ʻole ka hoʻohui mau ʻana a me ka waiho ʻana (CI/CD). Akā he kahua maʻalahi ia e hiki ai iā ʻoe ke hoʻohui i nā mea hana.
Ua ʻike nō hoʻi au e hoʻohana ana nā hui i kekahi mau mea hana no ka hoʻomohala ʻana, a me nā mea like ʻole no ka hui ʻana a me ke kau ʻana.
No ka laʻana, loaʻa iā lākou nā mea hana like ʻole no ka mana mana a me CI/CD. Pono ʻoe e hoʻololi a hoʻololi i waena o nā mea hana e hoʻoponopono i ke code a ʻike i nā pilikia.
maluna o GitLab aia kahi hoʻonohonoho piha o nā mea hana hoʻomohala: no ka mana mana, nā tiketi, nā noi hoʻohui, kahi paipu CI/CD maikaʻi loa i ka papa, kahi hoʻopaʻa inoa pahu, a me nā mea like ʻole. ʻAʻole au i ʻike i kahi noi e hāʻawi nui i ka mālama ʻana i kāu kaila hana hoʻomohala.
Makemake au i ka automation, no laila ua aʻo wau pehea e hoʻopili ai iā Pantheon iā GitLab i mea e hoʻokō ai i ka lālā nui ma GitLab e kau ʻia i ka ʻenehana hoʻomohala nui ma Pantheon. A hiki i nā noi hoʻohui ma GitLab ke hana a kau i ka code i nā kaiapuni multidev ma Pantheon.
Ma kēia kumu aʻo, e hele au iā ʻoe ma ke ʻano o ka hoʻonohonoho ʻana i kahi pilina ma waena o GitLab a me Pantheon a hoʻopaʻa i kāu kaila hana WordPress a me Drupal.
He mea hiki, hōʻike i ka waihona waihona GitLab, akā, e hana mākou i nā mea a pau me ko mākou mau lima e komo i loko GitLab CI a i ka wā e hiki mai ana e hoʻohana i kēia mea paahana ʻaʻole wale no ka hoʻolaha.
Hōʻike
No kēia pou, pono ʻoe e hoʻomaopopo e wāwahi ʻo Pantheon i kēlā me kēia pūnaewele i ʻekolu mau mea: code, database, a me nā faila.
Aia ka code i nā faila CMS e like me WordPress core, plugins, a me nā kumumanaʻo. Mālama ʻia kēia mau faila ma Nā waihona waihona Git, mālama ʻia e Pantheon, ʻo ia hoʻi, hiki iā mākou ke kau i ka code mai GitLab a i Pantheon me Git.
ʻO nā faila ma Pantheon nā faila media, ʻo ia hoʻi, nā kiʻi no ka pūnaewele. ʻO ka maʻamau e hoʻouka ʻia e nā mea hoʻohana a ʻaʻole ʻike ʻo Git iā lākou.
Ua kapa ʻia kaʻu papahana ma Pantheon a me GitLab pantheon-gitlab-blog-demo. Pono ka inoa o ka papahana. Maanei e hana mākou me kahi pūnaewele WordPress. Hiki iā ʻoe ke lawe iā Drupal, akā pono ʻoe e hoʻololi i kekahi mau mea.
Inā makemake kou mau lima e hoʻololi i kekahi mea, no ka laʻana, wehe a hoʻohui i nā plugins, e hoʻomanawanui. ʻAʻole pili ka pūnaewele iā GitLab, a makemake mākou i nā hoʻololi code āpau e hele ma GitLab.
Ke hoʻokomo mākou i ka WordPress, e hoʻi i ka dashboard pūnaewele Pantheon a hoʻololi i ke ʻano hoʻomohala iā Git.
ʻO ka hana mua ma GitLab
I kēia manawa pono ʻoe e hoʻololi i ka code WordPress mua mai ka pūnaewele Pantheon i GitLab. No ka hana ʻana i kēia, hoʻopaʻa mākou i ke code mai ka waihona Git o ka pūnaewele Pantheon ma ka wahi, a laila hoʻouna iā ia i ka waihona GitLab.
I kēia manawa e hoʻololi kāua git remote origine kuhikuhi iā GitLab ma kahi o Pantheon. Hiki ke hana командой git remote.
E hele kāua i ka papahana GitLab a kope i ka URL waihona mai ka Clone dropdown ma ka ʻaoʻao kikoʻī o ka papahana. E koho kākou i ke koho Clone me SSH, no ka mea, ua hoʻonohonoho mua mākou i ke kī SSH.
ma ka paʻamau git remote no kahi kope kūloko o ka waihona code - origin. Hiki ke hoʻololi i kēia c git remote set-url origin [URL репозитория GitLab], ma kahi o nā brackets mākou e komo ai i ka URL maoli.
ʻO ka hope, hoʻomaka mākou git push origin master --forcee pana i ka code WordPress mai Pantheon a i GitLab.
Hoʻokahi wale nō mea e pono ai ke koho -force. A laila ma nā hui git push ʻaʻole ia ma GitLab.
Hoʻonohonoho i nā hōʻoia a me nā loli
E hoʻomanaʻo pehea mākou i hoʻohui ai i kahi kī SSH kūloko e komo i Pantheon a me GitLab? Hiki ke hoʻohana ʻia ka hōʻailona SSH e ʻae iā GitLab a me Pantheon.
E hoʻopau mākou i nā ʻanuʻu mua ʻelua: E hana kāua i kahi kī SSH hou ma ka ʻāina me ssh-keygen a hoʻohui i ke kī pilikino ma ke ʻano he loli i ka papahana..
A laila e nīnau mākou SSH_PRIVATE_KEY pehea GitLab CI/CD hoʻololi kaiapuni i nā hoʻonohonoho papahana.
Ma nā ʻanuʻu ʻekolu a me ka ʻehā e hana mākou i kahi faila .gitlab-ci.yml me nā mea e like me kēia:
Mai hoʻopaʻa i ka faila i kēia manawa .gitlab-ci.yml, a laila pono ʻoe e hoʻohui i kekahi mea ʻē aʻe.
I kēia manawa hana mākou i ka pae ʻelima a e hoʻohui i ke kī lehulehu āu i hana ai i ka hana mua i nā lawelawe āu e pono ai ke komo i loko o ke kahua kūkulu.
I kā mākou hihia, makemake mākou e komo iā Pantheon mai GitLab. Hana mākou i nā ʻōlelo aʻoaʻo ma ka palapala Pantheon ma hoʻohui i kahi kī SSH iā Pantheon a hana i keia hana.
E hoʻomanaʻo: aia ka SSH pilikino ma GitLab, aia ka SSH ma Pantheon.
E hoʻonohonoho hou i kekahi mau mea hoʻololi kaiapuni. ʻO ka mea mua i kapa ʻia ʻo PANTHEON_SITE. ʻO kona waiwai ka inoa o ka pūnaewele Pantheon ma kāu mīkini.
Ua helu ʻia ka inoa ma ka mīkini ma ka hope o ka Clone me ke kauoha Git. Ua hoʻopaʻa ʻoe i ka pūnaewele ma ka ʻāina, no laila ʻo ia ka inoa o ka papa kuhikuhi waihona kūloko.
A laila, e hoʻonohonoho kākou i ka hoʻololi kaiapuni PANTHEON_GIT_URL. ʻO kēia ka URL waihona Git no ka pūnaewele Pantheon a mākou i hoʻohana mua ai.
E hoʻokomo wale i ka URL waihona SSH, me ka ʻole git clone a me ka inoa o ka pūnaewele ma ka mīkini ma ka hopena.
Phew. Pau kēlā, hiki iā mākou ke hoʻopau i kā mākou faila .gitlab-ci.yml.
E hana i kahi hana hoʻolaha
ʻO ka mea a mākou e hana mua ai me GitLab CI e like loa me ka mea a mākou i hana ai me nā waihona Git i ka wā ma mua. Akā i kēia manawa, e hoʻohui kākou i ka waihona Pantheon ma ke ʻano he kumu lua ʻo Git mamao, a laila kaomi i ke code mai GitLab a i Pantheon.
No ka hana ʻana i kēia, e hoʻonohonoho kāua kahua paʻadeploy и hanadeploy:dev, no ka mea, e kau mākou i ke kaiapuni hoʻomohala ma Pantheon. ʻO ka faila hopena .gitlab-ci.yml e like me kēia:
Nā Loli SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL pono ke nānā aku - ua hoʻonohonoho mākou i kēia mau ʻano hoʻololi kaiapuni ma mua. Me kēia mau hoʻololi e hiki iā mākou ke hoʻohana i nā waiwai i ka faila .gitlab-ci.yml i nā manawa he nui, a pono lākou e hoʻonui ʻia ma kahi hoʻokahi.
ʻO ka hope, hoʻohui, hana a hoʻouna i ka faila .gitlab-ci.yml ma GitLab.
Ke nānā nei i ka hoʻolaha ʻana
Inā mākou i hana pololei i nā mea a pau, ʻo ka hana deploy:dev e holo maikaʻi ma GitLab CI/CD a hoʻouna i kahi hana .gitlab-ci.yml ma Pantheon. E nānā kāua.
Ke hoʻouna ʻana i nā pae noi hoʻohui iā Pantheon
Maanei e hoʻohana mākou i kaʻu hiʻohiʻona Pantheon punahele − multidev, kahi e hiki ai iā ʻoe ke hana i nā kaiapuni Pantheon hou no nā lālā Git ma ke koi.
Ua kaupalena ʻia ke komo ʻana i ka multidev, no laila hiki ke hoʻokuʻu ʻia kēia ʻāpana. Akā inā loaʻa iā ʻoe ke komo, hiki iā ʻoe ke hoʻonui nui i ka huahana ma ka hoʻonohonoho ʻana i ka hana maʻalahi o nā kaiapuni multidev ma Pantheon mai GitLab merge noi.
E hana mua kākou i lālā Git hou me ka hoʻohana ʻana git checkout -b multidev-support. I kēia manawa e hoʻololi hou kāua i kekahi mea .gitlab-ci.yml.
Makemake au e hoʻokomo i ka helu noi hoʻohui i ka inoa kaiapuni Pantheon. No ka laʻana, ʻo ka noi hui mua mr-1, ka lua - mr-2 etc.
Hoʻololi ka noi merge, no laila pono mākou e hoʻoholo i nā inoa lālā Pantheon. He maʻalahi ma GitLab - pono ʻoe e hoʻohana nā mea hoʻololi kaiapuni i koho mua ʻia.
Hiki iā mākou ke lawe $CI_MERGE_REQUEST_IIDe kuhikuhi i ka helu noi hoʻohui. E hoʻopili i kēia mau mea āpau me nā ʻano hoʻololi kaiapuni honua a mākou i ʻōlelo ai ma mua a hoʻohui i kahi hana hou: multidev task ma ka hopena o ka faila. .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
E like ia me kā mākou hana deploy:dev, Hoʻouna wale ʻia ka lālā i Pantheon, ʻaʻole i master.
Ua hoʻohui mākou i ka faila hou .gitlab-ci.yml, a i kēia manawa e hoʻokuʻu i kahi lālā hou iā GitLab me git push -u origin multidev-support.
I kēia manawa e hana mākou i kahi noi hoʻohui hou mai ka lālā multidev-supportma ke kaomi ʻana Hana i ka noi hoʻohui.
Ma hope o ka hana ʻana i kahi noi hoʻohui, ʻike mākou i ke ʻano o ka hana CI/CD deploy:multidev.
E nānā, ua hoʻouna ʻia kahi pae hou iā Pantheon. Akā inā mākou e hele i ka ʻāpana multidev ma ka papa kuhikuhi pūnaewele Pantheon, ʻaʻole mākou e ʻike i ke kaiapuni hou ma laila.
E nānā kākou i ka ʻāpana ʻo Git Branches.
ʻO ka hopena, kā mākou pae mr-1 hiki i Pantheon. E hana kākou i kaiapuni mai kahi lālā mr-1.
Ua hana mākou i kahi kaiapuni multidev, i kēia manawa e hoʻi kāua i GitLab a nānā i ka ʻāpana Hana > Kaiapuni. E ʻike mākou i nā mea komo no dev и mr-1.
ʻO kēia no ka mea ua hoʻohui mākou i kahi komo environment Me ka inoa name и url i loko o nā hana CI/CD. Inā mākou e kaomi i ka ikona kaiapuni hāmama, e lawe ʻia mākou i ka URL o ka honua multidev ma Pantheon.
Hoʻokaʻawale i ka hana ʻana o multidev
Ma ke kumu, hiki iā ʻoe ke hoʻōki ma ʻaneʻi a hoʻomanaʻo wale i ka hana ʻana i kahi kaiapuni multidev no kēlā me kēia noi hoʻohui, akā hiki ke hana ʻia kēia kaʻina hana.
Loaʻa iā Pantheon kahi mea hana laina kauoha Kūlana, kahi e hiki ai iā ʻoe ke hana me ka paepae maʻalahi. ʻAe ʻo Terminus iā ʻoe e hana i nā kaiapuni multidev mai ka laina kauoha - kūpono no GitLab CI.
Pono mākou i kahi noi hui hou e hoʻāʻo i kēia. E hana mākou i lālā hou me ka hoʻohana ʻana git checkout -b auto-multidev-creation.
No ka hoʻohana ʻana iā Terminus i nā hana GitLab CI/CD, pono ʻoe i kahi hōʻailona mīkini no ka hōʻoia me Terminus a me kahi kiʻi pahu me Terminus.
Inā poina iā ʻoe pehea e hoʻohui ai i nā ʻano like ʻole o GitLab, e hoʻi i kahi a mākou i wehewehe ai PANTHEON_SITE.
Ke hana ʻana i kahi Dockerfile me Terminus
Inā ʻaʻole ʻoe e hoʻohana iā Docker a makemake ʻole i nā faila Dockerfile, lawe i ko'u kii registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest a lele i keia pauku.
Loaʻa iā GitLab kahi waihona waihona, kahi e hiki ai iā mākou ke kūkulu a kau i ka Dockerfile no kā mākou papahana. E hana mākou i kahi Dockerfile me Terminus e hana pū me Pantheon.
ʻO Terminus kahi mea hana laina kauoha PHP, no laila e hoʻomaka kākou me ke kiʻi PHP. Ke kau nei au iā Terminus ma o Composer, no laila e hoʻohana wau kiʻi mana Docker Composer. Hana mākou Dockerfile ma ka papa kuhikuhi waihona kūloko me kēia ʻike:
# 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"
E hahai i nā kuhikuhi no ka hui ʻana a me ka hoʻouna ʻana i nā kiʻi mai ka ʻāpana E kūkulu a paʻi i nā kiʻi в palapala hoʻopaʻa inoa pahue ohi kii mai Dockerfile a pana aku iā GitLab.
E wehe i ka ʻāpana Kakau inoa i ka papahana GitLab. Inā hele nā mea a pau e like me ka hoʻolālā, aia kā mākou kiʻi ma laila. Kākau i lalo i kahi loulou i ka tag kiʻi - pono mākou no ka faila .gitlab-ci.yml.
Paukū script i ka pilikia deploy:multidev ke hoʻomaka nei e ulu, no laila e neʻe kākou i kahi faila ʻokoʻa. E hana i kahi faila hou 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
Aia ka palapala ma kahi papa kuhikuhi pilikino a ʻAʻole ʻae ʻia ke komo pūnaewele i Pantheon. Loaʻa iā mākou kahi palapala no kā mākou loiloi multidev. E hoʻohou hou i ka ʻāpana deploy:multidev faila .gitlab-ci.ymle like me keia:
Pono mākou e hōʻoia e hana ʻia kā mākou mau hana ma ke kiʻi maʻamau i hana ʻia, no laila e hoʻohui i kahi wehewehe image mai ka URL kakau i .gitlab-ci.yml. ʻO ka hopena, ua hoʻopau mākou i kahi faila e like me kēia .gitlab-ci.yml:
Hoʻohui, hana a hoʻouna private/multidev-deploy.sh и .gitlab-ci.yml. I kēia manawa, hoʻi mākou i GitLab a kali i ka hana CI / CD e hoʻopau. E hoʻomanawanui: hiki i ka multidev ke hana i kekahi mau minuke.
A laila hele mākou e nānā i ka papa inoa multidev ma Pantheon. Auwe ka hana mana! Kaiapuni Multidev mr-2 ma ʻaneʻi.
hopena
ʻOi aku ka leʻaleʻa o koʻu hui i ka wā i hoʻomaka ai mākou e wehe i nā noi hoʻohui a me ka hana ʻana i nā kaiapuni.
Me nā mea hana ikaika o GitLab a me Pantheon, hiki iā ʻoe ke hoʻohui iā GitLab iā Pantheon maʻalahi.
Ma muli o ka hoʻohana ʻana iā GitLab CI/CD, loaʻa i kā mākou workflow kahi lumi e ulu ai. Eia kekahi mau manaʻo e hoʻomaka ai:
Hoʻohui i kahi hana kūkulu.
Hoʻohui i ka hoʻāʻo ʻakomi.
Hoʻohui i kahi hana e hōʻoia i ka hoʻokō ʻana i nā kūlana code.
Ua hana maikaʻi mākou ma Pantheon ma ka mana 2 o kā mākou plugin no nā mea hana hana Terminus me ke kākoʻo ʻo GitLab. Inā ʻaʻole ʻoe makemake e pilikia i nā hoʻonohonoho no kēlā me kēia papahana, e hoʻāʻo i kēia plugin a kōkua iā mākou e hoʻāʻo i ka v2 beta. No ka hui Terminus build:project:create Pono ʻoe i kahi hōʻailona Pantheon a me kahi hōʻailona GitLab. E hoʻolālā ʻo ia i kekahi o nā papahana laʻana me ka Composer a me ka hoʻāʻo automated, e hana i kahi papahana hou ma GitLab, kahi pūnaewele Pantheon hou, a hoʻohui iā lākou me ka hoʻohana ʻana i nā mea hoʻololi kaiapuni a me nā kī SSH.
No ka mea kākau
Hana ʻo Andrew Taylor i nā mea hana no nā mea hoʻomohala ma Pantheon.