
Baƙonmu, mai ƙirƙirar kayan aikin haɓakawa Pantheon, yana magana game da yadda ake sarrafa ayyukan ta atomatik. WordPress ta amfani da GitLab CI/CD.
В Ina aiki a fannin hulɗa da masu haɓaka manhajoji, don haka koyaushe ina neman sabbin hanyoyin taimaka wa masu haɓaka manhajoji. WordPress и Drupal Magance matsalolin sarrafa kansa a cikin ayyukan aiki. Domin yin wannan, ina son gwada sabbin kayan aiki da haɗa su don cimma ingantaccen aiki.
Sau da yawa ina ganin masu haɓakawa suna kokawa da uwar garken saiti guda ɗaya.
Abin farin ciki ne don jira lokacinku don amfani da sabar matsakaici ko aika abokan ciniki URL tare da bayanin kula: "Duba nan, amma kar ku duba nan tukuna."
- ɗayan kayan aikin Pantheon mai sanyi - yana magance wannan matsalar, saboda tare da su zaku iya ƙirƙirar yanayi don rassan Git akan buƙata. Kowane mahalli na multidev yana da URL na kansa da bayanan bayanai, don haka masu haɓakawa za su iya yin aiki cikin nutsuwa, bincika inganci, da samun amincewa ba tare da taka ƙafar juna ba.
Amma Pantheon ba shi da kayan aikin sarrafa sigar ko ci gaba da haɗa kai da turawa (CI/CD). Amma dandamali ne mai sassauci wanda zaku iya haɗa kowane kayan aiki da shi.
Na kuma lura cewa ƙungiyoyi suna amfani da wasu kayan aiki don haɓakawa, kuma daban-daban don haɗuwa da turawa.
Misali, suna da kayan aiki daban-daban don sarrafa sigar da CI/CD. Dole ne ku kewaya kuma ku canza tsakanin kayan aikin don gyara lamba da gano matsalolin.
a kan akwai cikakkun kayan aikin haɓakawa: don sarrafa sigar, tikiti, buƙatun haɗaka, bututun CI / CD mafi kyau a cikin aji, rajistar akwati, da duk wani abu makamancin haka. Har yanzu ban ci karo da aikace-aikacen da ke ba da abubuwa da yawa don sarrafa ayyukan ci gaban ku ba.
Ina son aiki da kai, don haka na koyi yadda ake haɗa Pantheon zuwa GitLab don ƙaddamar da babban reshe akan GitLab zuwa babban yanayin ci gaba a Pantheon. Kuma haɗa buƙatun akan GitLab na iya ƙirƙira da tura lamba zuwa mahallin multidev a cikin Pantheon.
A cikin wannan jagorar, zan nuna muku yadda ake saita haɗi tsakanin GitLab da Pantheon da kuma inganta tsarin aikin ku. WordPress и Drupal.
Tabbas yana yiwuwa, , amma za mu yi komai da hannunmu don zurfafa cikin kuma a nan gaba amfani da wannan kayan aiki ba kawai don turawa ba.
Gabatarwar
Don wannan sakon, kuna buƙatar fahimtar cewa Pantheon ya rushe kowane rukunin yanar gizon zuwa abubuwa uku: lamba, bayanai, da fayiloli.
Lambar ta ƙunshi fayilolin CMS kamar core, plugins, da themes. WordPressAna sarrafa waɗannan fayiloli a cikin , wanda Pantheon ya shirya, ma'ana za mu iya tura lamba daga GitLab zuwa Pantheon tare da Git.
Fayiloli a cikin Pantheon fayilolin mai jarida ne, wato, hotuna na rukunin yanar gizon. Yawanci masu amfani ne ke loda su kuma Git yayi watsi da su.
, ƙarin sani game da ko ku pantheon.io.
Zato
Ana kiran aikina akan Pantheon da GitLab pantheon-gitlab-blog-demoDole ne sunan aikin ya zama na musamman. Za mu yi aiki da gidan yanar gizo a nan. WordPressKai ma za ka iya ɗaukarsa Drupal, amma wasu abubuwa za su buƙaci a canza su.
Zan yi amfani kuma zaka iya aiki a ciki , idan kina so.
Ƙirƙiri aiki
Da farko, bari mu ƙirƙira (zamu dawo kan wannan daga baya).
Yanzu Sannan mu shigar da shi. WordPress don dashboard ɗin gidan yanar gizo.
Idan hannayenku suna ƙaiƙayi don canza wani abu, misali, cire ko ƙara plugins, yi haƙuri. Har yanzu ba a haɗa rukunin yanar gizon zuwa GitLab ba, kuma muna son duk canje-canjen lamba su bi ta GitLab.
Yaushe za mu shigar da shi? WordPress, koma zuwa dashboard ɗin gidan yanar gizon Pantheon kuma canza yanayin haɓakawa zuwa Git.
Ƙaddamar da farko akan GitLab
Yanzu kuna buƙatar canja wurin lambar farko WordPress Daga gidan yanar gizon Pantheon zuwa GitLab. Don yin wannan, muna kwafi lambar daga ma'ajiyar Git ta gidan yanar gizon Pantheon a gida sannan mu tura ta zuwa ma'ajiyar GitLab.
Don sauƙaƙa da aminci, kuma ba za mu shigar da kalmar sirri ba duk lokacin da muka rufe ma'ajiyar Pantheon Git. A lokaci guda riga .
Don yin wannan, rufe shafin Pantheon a gida ta hanyar kwafin umarni daga filin Clone tare da Git akan dashboard na rukunin.
Idan kuna buƙatar taimako, karanta takaddun .
Yanzu bari mu canza git remote origindon nuna GitLab maimakon Pantheon. Ana iya yi .
Mu je aikin GitLab kuma mu kwafi URL ɗin ma'ajiya daga zazzagewar Clone akan shafin cikakkun bayanai na aikin. Bari mu zaɓi Clone tare da zaɓi na SSH, saboda mun riga mun saita maɓallin SSH.
da default git remote don kwafin wurin ajiyar lambar - origin. Ana iya canza wannan c git remote set-url origin [URL репозитория GitLab], inda maimakon maɓalli muka shigar da ainihin URL.
A ƙarshe, mun ƙaddamar git push origin master --forcedon aika lambar WordPress daga shafin Pantheon akan GitLab.
Ana buƙatar zaɓin ƙarfin ƙarfi sau ɗaya kawai. Sannan a cikin ƙungiyoyi
git pushba zai kasance akan GitLab ba.
Saita takaddun shaida da masu canji
Ka tuna yadda muka ƙara maɓallin SSH a gida don shiga Pantheon da GitLab? Ana iya amfani da alamar SSH don ba da izini GitLab da Pantheon.
GitLab yana da kyawawan takardu. Mu gani .
Yanzu za mu kammala matakai biyu na farko: Bari mu ƙirƙiri sabon maɓalli na SSH a gida tare da ssh-keygen kuma ƙara maɓallin keɓaɓɓen azaman mai canzawa zuwa aikin..
Sannan zamu tambaya SSH_PRIVATE_KEY yadda a cikin saitunan aikin.
A mataki na uku da na huɗu za mu ƙirƙiri fayil .gitlab-ci.yml da abun ciki kamar haka:
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"Kada mu ƙaddamar da fayil ɗin tukuna .gitlab-ci.yml, to za ku buƙaci ƙara wani abu dabam zuwa gare shi.
Yanzu mun yi mataki na biyar kuma ƙara maɓallin jama'a wanda kuka ƙirƙira a matakin farko zuwa ayyukan da kuke buƙatar samun dama ga mahallin gini.
A cikin yanayinmu, muna son samun damar Pantheon daga GitLab. Muna bin umarnin a cikin takaddar Pantheon akan kuma yi wannan mataki.
Tuna: SSH mai zaman kansa yana cikin GitLab, buɗe SSH yana cikin Pantheon.
Bari mu kafa wasu ƴan canjin yanayi. Ana kiran na farko PANTHEON_SITE. Darajarsa shine sunan shafin Pantheon akan injin ku.
An jera sunan na'urar a ƙarshen Clone tare da umarnin Git. Kun riga kun rufe rukunin yanar gizon a cikin gida, don haka wannan zai zama sunan kundin adireshin wurin.
Na gaba, bari mu saita canjin yanayi PANTHEON_GIT_URL. Wannan shine URL ɗin ma'ajiya na Git don rukunin Pantheon wanda muka riga muka yi amfani da shi.
Shigar da URL na ma'ajin SSH kawai, ba tare da
git cloneda sunan shafin akan na'ura a karshen.
Phew. Anyi haka, yanzu zamu iya gama fayil ɗin mu .gitlab-ci.yml.
Ƙirƙiri aikin turawa
Abin da za mu fara yi tare da GitLab CI yayi kama da abin da muka yi tare da wuraren ajiyar Git a baya. Amma wannan lokacin, bari mu ƙara ma'ajiyar Pantheon azaman tushen Git mai nisa na biyu, sannan mu tura lambar daga GitLab zuwa Pantheon.
Don yin wannan, bari mu daidaita deploy и deploy:dev, saboda za mu tura zuwa yanayin ci gaba akan Pantheon. Fayil da aka samu .gitlab-ci.yml zai yi kama da haka:
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:
- masterBambanci SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL ya kamata ya zama sananne - mun kafa waɗannan masu canjin yanayi a baya. Tare da waɗannan masu canji za mu iya amfani da ƙimar da ke cikin fayil ɗin .gitlab-ci.yml sau da yawa, kuma za su buƙaci sabunta su a wuri ɗaya kawai.
A ƙarshe, ƙara, ƙaddamar da aika fayil ɗin .gitlab-ci.yml na GitLab.
Ana duba turawa
Idan muka yi komai daidai, aikin deploy:dev zai gudana cikin nasara a GitLab CI/CD kuma ya ƙaddamar da ƙaddamarwa .gitlab-ci.yml in Pantheon. Mu duba.
Aika zaren neman haɗin kai zuwa Pantheon
Anan za mu yi amfani da fasalin Pantheon da na fi so - , inda zaku iya ƙirƙirar ƙarin yanayin Pantheon don rassan Git akan buƙata.
, don haka ana iya tsallake wannan sashin. Amma idan kuna da dama, zaku iya haɓaka yawan aiki da gaske ta hanyar kafa ƙirƙirar mahalli na multidev ta atomatik akan Pantheon daga buƙatun haɗin GitLab.
Da farko bari mu yi sabon reshen Git a cikin gida ta amfani da shi git checkout -b multidev-support. Yanzu bari mu sake canza wani abu a ciki .gitlab-ci.yml.
Ina so in haɗa lambar neman haɗin kai a cikin sunan mahalli na Pantheon. Misali, buƙatun haɗin farko shine mr-1, na biyu - mr-2 da dai sauransu.
Buƙatar haɗakarwa tana canzawa, don haka muna buƙatar tantance sunayen reshen Pantheon a hankali. Yana da sauƙi akan GitLab - kawai kuna buƙatar amfani .
Za mu iya ɗauka $CI_MERGE_REQUEST_IIDdon tantance lambar neman haɗin kai. Bari mu yi amfani da duk waɗannan tare da sauye-sauyen yanayi na duniya da muka ayyana a baya kuma mu ƙara sabon ƙaddamarwa: aikin multitidev a ƙarshen fayil ɗin. .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_requestsZai yi kama da aikinmu deploy:dev, kawai reshe ne ake aika zuwa Pantheon, ba zuwa master.
Mun ƙara kuma mun ƙaddamar da sabunta fayil ɗin .gitlab-ci.yml, kuma yanzu bari mu tura sabon reshe zuwa GitLab tare da git push -u origin multidev-support.
Yanzu bari mu ƙirƙiri sabon buƙatar haɗawa daga reshe multidev-supportta dannawa Ƙirƙiri buƙatar haɗuwa.
Bayan ƙirƙirar buƙatar haɗin kai, mun kalli yadda ake aiwatar da aikin CI/CD deploy:multidev.
Duba, an aika sabon zaren zuwa Pantheon. Amma idan muka je sashin multidev akan dashboard ɗin rukunin yanar gizon Pantheon, ba za mu ga sabon yanayi a wurin ba.
Bari mu kalli sashin Git Branches.
A sakamakon haka, mu zaren mr-1 zuwa Pantheon. Mu samar da yanayi daga reshe mr-1.
Mun ƙirƙiri yanayin multidev, yanzu bari mu koma GitLab mu kalli sashin Ayyuka > Muhalli. Za mu ga shigarwar don dev и mr-1.
Wannan saboda mun ƙara shigarwa environment Tare da suna name и url zuwa CI / CD ayyuka. Idan muka danna gunkin buɗaɗɗen yanayi, za a kai mu zuwa URL na mahallin multidev akan Pantheon.
Yi atomatik ƙirƙirar multidev
A ka'ida, za ku iya tsayawa a nan kuma kawai ku tuna don ƙirƙirar yanayi na multidev don kowane buƙatar haɗuwa, amma wannan tsari na iya zama mai sarrafa kansa.
Pantheon yana da kayan aikin layin umarni , inda zaku iya aiki tare da dandamali ta atomatik. Terminus yana ba ku damar ƙirƙirar yanayin multidev daga layin umarni - manufa don .
Muna buƙatar sabon buƙatar haɗin kai don gwada wannan. Bari mu ƙirƙiri sabon reshe ta amfani da git checkout -b auto-multidev-creation.
Don amfani da Terminus a cikin ayyukan GitLab CI/CD, kuna buƙatar alamar injin don tantancewa tare da Terminus da hoton akwati tare da Terminus.
, ajiye shi a wuri mai aminci kuma ƙara shi azaman canjin yanayi na duniya a GitLab tare da sunan PANTHEON_MACHINE_TOKEN.
Idan kun manta yadda ake ƙara masu canjin yanayi na GitLab, koma inda muka ayyana
PANTHEON_SITE.
Ƙirƙirar Dockerfile tare da Terminus
Idan baku amfani da Docker ko ba ku son fayiloli Dockerfile, ɗauki hotona registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest kuma ku tsallake wannan sashe.
, inda za mu iya ginawa da sanya Dockerfile don aikin mu. Bari mu ƙirƙiri Dockerfile tare da Terminus don aiki tare da Pantheon.
Terminus kayan aiki ne na layin umarni na PHP, don haka bari mu fara da hoton PHP. Ina shigar da Terminus ta hanyar Mawaƙi, don haka zan yi amfani . Mun halitta Dockerfile a cikin kundin adireshi na gida tare da abun ciki mai zuwa:
# 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"Bi umarnin don haɗawa da aika hotuna daga sashin Gina da tura hotuna в don tattara hoto daga Dockerfile kuma tura shi zuwa GitLab.
Bude sashin Registry a cikin aikin GitLab. Idan komai ya tafi bisa ga tsari, hotonmu zai kasance a can. Rubuta hanyar haɗi zuwa alamar hoton - muna buƙatar shi don fayil ɗin .gitlab-ci.yml.
Sashe script cikin matsala deploy:multidev yana fara girma, don haka bari mu matsar da shi zuwa wani fayil daban. Ƙirƙiri sabon fayil 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..."
fiRubutun yana cikin kundin adireshi mai zaman kansa kuma . Muna da rubutun don dabaru na multidev. Bari yanzu mu sabunta sashin deploy:multidev fayil .gitlab-ci.ymldomin ya zama kamar haka:
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_requestsMuna buƙatar tabbatar da cewa an yi ayyukanmu a cikin hoton da aka ƙirƙira, don haka bari mu ƙara ma'ana image daga URL rajista zuwa .gitlab-ci.yml. A sakamakon haka, mun ƙare da fayil kamar wannan .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Ƙara, ƙaddamar da aikawa private/multidev-deploy.sh и .gitlab-ci.yml. Yanzu mun koma GitLab kuma jira aikin CI/CD ya kammala. Yi haƙuri: multidev na iya ɗaukar mintuna da yawa don ƙirƙira.
Sa'an nan kuma mu je duba jerin multidev akan Pantheon. Haba abin al'ajabi! Multidev muhalli mr-2 riga a nan.
ƙarshe
Ƙungiya ta ta sami ƙarin nishaɗi sosai lokacin da muka fara buɗe buƙatun haɗin kai da ƙirƙirar yanayi ta atomatik.
Tare da manyan kayan aikin GitLab da Pantheon, zaku iya haɗa GitLab zuwa Pantheon ta atomatik.
Tunda muna amfani da GitLab CI/CD, aikin mu zai sami damar girma. Anan akwai ra'ayoyi guda biyu don fara ku:
- Ƙara matakin ginawa.
- Ƙara gwaji ta atomatik.
- Ƙara ɗawainiya don tabbatar da ƙa'idodin lamba sun cika.
- .Ara .
Bari mu san abin da kuke tunani game da GitLab, Pantheon da aiki da kai.
PS Shin kun san cewa Terminus, kayan aikin layin umarni na Pantheon, ?
Mu a Pantheon mun yi kyakkyawan aiki akan sigar 2 na mu tare da tallafin GitLab. Idan ba kwa son damuwa da saituna don kowane aikin, gwada wannan plugin ɗin kuma ku taimake mu gwada v2 beta. Don ƙungiyar Terminus build:project:create Kuna buƙatar alamar Pantheon kawai da alamar GitLab. Za ta tura ɗayan ayyukan samfurin tare da Mawaƙi da gwaji ta atomatik, ƙirƙirar sabon aikin a GitLab, sabon rukunin Pantheon, kuma ya haɗa su ta amfani da masu canjin yanayi da maɓallan SSH.
Game da marubucin
Andrew Taylor yana ƙirƙirar kayan aikin don masu haɓakawa a ciki .
source: www.habr.com
