
ä»åã®ã²ã¹ãã¯ãéçºè
ããŒã«éçºäŒæ¥ã®Pantheon瀟ã§ããä»åã¯ããããã€ã¡ã³ããèªååããæ¹æ³ã«ã€ããŠã話ããã ããŸãã WordPress GitLab CI/CD ã䜿çšããŠããŸãã
Ð ç§ã¯éçºè ãªã¬ãŒã·ã§ã³ãºãæ åœããŠããã®ã§ãåžžã«éçºè ãæ¯æŽããæ°ããæ¹æ³ãæ¢ããŠããŸãã WordPress О Drupal ã¯ãŒã¯ãããŒã«ãããèªååã®åé¡ã解決ããããã®ããã«ã¯ãæ°ããããŒã«ã詊ããããããããçµã¿åãããŠå¹çæ§ãé«ããããšã倧奜ãã ã
éçºè ãåäžã®ã¹ããŒãžã³ã° ãµãŒããŒã§èŠåŽããŠããã®ãããèŠãããŸãã
äžéãµãŒããŒã䜿çšããé çªãåŸ ã€ããããããèŠãŠãã ããããã ãããŸã ããã¯èŠãŠããªãã§ãã ããããšããæ³šèšãå«ã URL ãã¯ã©ã€ã¢ã³ãã«éä¿¡ããã®ã¯ããšãŠã楜ããããšã§ãã
Pantheon ã®åªããããŒã«ã® XNUMX ã€ã§ãããã®åé¡ã¯ããªã³ããã³ãã§ Git ãã©ã³ãã®ç°å¢ãäœæã§ããããã解決ãããŸãã åãã«ãéçºç°å¢ã«ã¯ç¬èªã® URL ãšããŒã¿ããŒã¹ããããããéçºè ã¯ãäºãã«è¶³èžã¿ããããšãªãéãã«äœæ¥ããå質ããã§ãã¯ããæ¿èªãåŸãããšãã§ããŸãã
ããããPantheon ã«ã¯ããŒãžã§ã³ç®¡çãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ãšããã〠(CI/CD) ã®ããã®ããŒã«ããããŸããã ãã ããããã¯ããããããŒã«ãçµ±åã§ããæè»ãªãã©ãããã©ãŒã ã§ãã
ãŸããããŒã ãéçºã«ã¯ç¹å®ã®ããŒã«ã䜿çšããã¢ã»ã³ããªãšå±éã«ã¯å¥ã®ããŒã«ã䜿çšããŠããããšã«ãæ°ã¥ããŸããã
ããšãã°ãããŒãžã§ã³ç®¡çãš CI/CD çšã«ããŸããŸãªããŒã«ããããŸãã ã³ãŒããç·šéããŠåé¡ã蚺æããã«ã¯ãããŒã«ãããã£ããåãæ¿ãããããå¿ èŠããããŸãã
Ðа ããŒãžã§ã³ç®¡çããã±ãããããŒãžãªã¯ãšã¹ããã¯ã©ã¹æé«ã® CI/CD ãã€ãã©ã€ã³ãã³ã³ãã㌠ã¬ãžã¹ããªãªã©ãããããéçºããŒã«ã®ãã«ã»ããããããŸãã éçºã¯ãŒã¯ãããŒã®ç®¡çã«ããã»ã©å€ãã®æ©èœãæäŸããã¢ããªã±ãŒã·ã§ã³ã«ã¯ãŸã åºäŒã£ãŠããŸããã
ç§ã¯èªååã倧奜ããªã®ã§ãPantheon ã GitLab ã«æ¥ç¶ããŠãGitLab ã®ã¡ã€ã³ ãã©ã³ããžã®ã³ãããã Pantheon ã®ã¡ã€ã³éçºç°å¢ã«ãããã€ãããããã«ããæ¹æ³ãåŠã³ãŸããã ãŸããGitLab ã®ããŒãž ãªã¯ãšã¹ãã«ãããã³ãŒããäœæã㊠Pantheon ã®ãã«ãéçºç°å¢ã«ãããã€ã§ããŸãã
ãã®ã¬ã€ãã§ã¯ãGitLabãšPantheonéã®æ¥ç¶ãèšå®ããã¯ãŒã¯ãããŒãæé©åããæ¹æ³ãã玹ä»ããŸãã WordPress О Drupal.
ãã¡ããããã¯å¯èœã§ããã ãã§ãç§ãã¡ã¯ãã¹ãŠãèªåã®æã§æãäžããŠãããŸãã ãããŠå°æ¥çã«ã¯ããã®ããŒã«ãå±éã ãã§ãªã䜿çšããäºå®ã§ãã
å°å ¥
ãã®èšäºã§ã¯ãPantheon ãåãµã€ããã³ãŒããããŒã¿ããŒã¹ããã¡ã€ã«ã® XNUMX ã€ã®èŠçŽ ã«åå²ããŠããããšãçè§£ããå¿ èŠããããŸãã
ãã®ã³ãŒãã«ã¯ãã³ã¢ããã©ã°ã€ã³ãããŒããªã©ã®CMSãã¡ã€ã«ãå«ãŸããŠããŸãã WordPressãããã®ãã¡ã€ã«ã¯ ãPantheon ã«ãã£ãŠãã¹ããããŠãããããGit ã䜿çšã㊠GitLab ãã Pantheon ã«ã³ãŒãããããã€ã§ããŸãã
Pantheon ã®ãã¡ã€ã«ã¯ã¡ãã£ã¢ ãã¡ã€ã«ãã€ãŸããµã€ãã®ç»åã§ãã éåžžããããã¯ãŠãŒã¶ãŒã«ãã£ãŠã¢ããããŒããããGit ã¯ããããç¡èŠããŸãã
ã詳ããèŠã ãŸã㯠pantheon.io ã§ã
ä»®å®
Pantheon ãš GitLab äžã®ç§ã®ãããžã§ã¯ãã¯æ¬¡ã®ãšããã§ãã pantheon-gitlab-blog-demoãããžã§ã¯ãåã¯äžæã§ããå¿
èŠããããŸããããã§ã¯ãŠã§ããµã€ããæ±ããŸãã WordPressããªãããããæã£ãŠããããšãã§ããŸã Drupalããããããã€ã倿Žããå¿
èŠãããã ããã
ç§ã䜿çšããŸã ãããŠããªãã¯ããã§åãããšãã§ããŸã ã ããªãããããå Žåã¯ã
ãããžã§ã¯ããäœæãã
ãŸããäœæããŸããã (ããã«ã€ããŠã¯åŸã§èª¬æããŸã)ã
ä» æ¬¡ã«ããããã€ã³ã¹ããŒã«ããŸãã WordPress ãŠã§ããµã€ãã®ããã·ã¥ããŒãçšã§ãã
ãã©ã°ã€ã³ã®åé€ã远å ãªã©ãäœãã倿ŽããããŠããããããŠããå Žåã¯ããã°ãããåŸ ã¡ãã ããã ãµã€ãã¯ãŸã GitLab ã«æ¥ç¶ãããŠããªãããããã¹ãŠã®ã³ãŒã倿Žã GitLab çµç±ã§è¡ãå¿ èŠããããŸãã
ãã€ã€ã³ã¹ããŒã«ãããŸããïŒ WordPressPantheonã®ãŠã§ããµã€ãã®ããã·ã¥ããŒãã«æ»ããéçºã¢ãŒããGitã«å€æŽããŸãã
GitLab ã§ã®æåã®ã³ããã
次ã«ãåæã³ãŒãã転éããå¿ èŠããããŸã WordPress Pantheonã®ãŠã§ããµã€ãããGitLabãžããããè¡ãã«ã¯ãPantheonãŠã§ããµã€ãã®Gitãªããžããªããã³ãŒããããŒã«ã«ã«ã¯ããŒã³ãããããGitLabãªããžããªã«ããã·ã¥ããŸãã
ããç°¡åãã€å®å šã«ãå©çšããã ãããã«ã ãŸããPantheon Git ãªããžããªã®ã¯ããŒã³ãäœæãããã³ã«ãã¹ã¯ãŒããå ¥åããå¿ èŠããªããªããŸãã åæã«ãã§ã« .
ãããè¡ãã«ã¯ããµã€ã ããã·ã¥ããŒãã® [Clone with Git] ãã£ãŒã«ãããã³ãã³ããã³ããŒããŠãPantheon ãµã€ãã®ã¯ããŒã³ãããŒã«ã«ã«äœæããŸãã
ãµããŒããå¿
èŠãªå Žåã¯ãããã¥ã¡ã³ãããèªã¿ãã ãã .
ãããå€ããŠã¿ãŸããã git remote originPantheon ã§ã¯ãªã GitLab ãæãããã«ããŸãã ã§ããã .
GitLab ãããžã§ã¯ãã«ç§»åãããããžã§ã¯ãã®è©³çްããŒãžã® [ã¯ããŒã³] ããããããŠã³ãããªããžã㪠URL ãã³ããŒããŸãããã SSH ããŒã¯ãã§ã«æ§æãããŠããããã[SSH ã䜿çšããŠã¯ããŒã³ãäœæ] ãªãã·ã§ã³ãéžæããŸãããã
ÐПÑЌПлÑÐ°ÐœÐžÑ git remote ã³ãŒã ãªããžããªã®ããŒã«ã« ã³ããŒã®å Žå - originã ããã¯å€æŽã§ããŸãã git remote set-url origin [URL ÑепПзОÑПÑÐžÑ GitLab], ããã§ãæ¬åŒ§ã®ä»£ããã«å®éã® URL ãå
¥åããŸãã
ã€ãã«ãæã¡äžããŸã git push origin master --forceã³ãŒããéä¿¡ãã WordPress GitLabäžã®Pantheonãµã€ãããã
âforce ãªãã·ã§ã³ã¯ XNUMX åã ãå¿ èŠã§ãã ããããããŒã ã§
git pushGitLab ã«ã¯ååšããŸããã
è³æ Œæ å ±ãšå€æ°ã®ã»ããã¢ãã
Pantheon ãš GitLab ã«ãã°ã€ã³ããããã«ããŒã«ã«ã§ SSH ããŒã远å ããæ¹æ³ãèŠããŠããŸãã? SSH ããŒã¯ã³ã¯ãGitLab ãš Pantheon ãèªèšŒããããã«äœ¿çšã§ããŸãã
GitLab ã«ã¯åªããããã¥ã¡ã³ãããããŸãã èŠãŠã¿ãŸããã .
ããã§æåã® XNUMX ã€ã®ã¹ããããå®äºããŸãã ssh-keygen ã䜿çšããŠããŒã«ã«ã«æ°ãã SSH ã㌠ãã¢ãäœæããç§å¯ããŒã倿°ãšããŠãããžã§ã¯ãã«è¿œå ããŸããã.
ããã§ã¯ãå°ãããŸã SSH_PRIVATE_KEY æ¹æ³ ãããžã§ã¯ãèšå®ã§ã
XNUMX çªç®ãš XNUMX çªç®ã®ã¹ãããã§ã¯ããã¡ã€ã«ãäœæããŸã .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, ãã®å Žåã¯ãããã«äœãä»ã®ãã®ã远å ããå¿
èŠããããŸãã
ããã§ XNUMX çªç®ã®ã¹ããããå®è¡ãã æåã®ã¹ãããã§äœæããå ¬éããŒãããã«ãç°å¢ã§ã¢ã¯ã»ã¹ããå¿ èŠããããµãŒãã¹ã«è¿œå ããŸãã.
ç§ãã¡ã®å Žåã¯ãGitLab ãã Pantheon ã«ã¢ã¯ã»ã¹ããããšèããŠããŸãã ãã³ããªã³ã®ææžã®æç€ºã«åŸããŸãã ãããŠãã®ã¹ããããå®è¡ããŸãã
èŠããŠãããŠãã ãã: ãã©ã€ããŒã SSH 㯠GitLab ã«ããããªãŒãã³ SSH 㯠Pantheon ã«ãããŸãã
ããã«ããã€ãã®ç°å¢å€æ°ãèšå®ããŠã¿ãŸãããã æåã®ãã®ã¯ PANTHEON_SITE ãšåŒã°ããŸãã ãã®å€ã¯ããã·ã³äžã® Pantheon ãµã€ãã®ååã§ãã
ãã·ã³äžã®ååã¯ãClone with Git ã³ãã³ãã®æåŸã«ãªã¹ããããŸãã ãã§ã«ãµã€ãã®ã¯ããŒã³ãããŒã«ã«ã«äœæããŠããããããããããŒã«ã« ãªããžã㪠ãã£ã¬ã¯ããªã®ååã«ãªããŸãã
次ã«ãç°å¢å€æ°ãèšå®ããŸããã PANTHEON_GIT_URLã ããã¯ããã§ã«äœ¿çšããŠãã Pantheon ãµã€ãã® Git ãªããžã㪠URL ã§ãã
SSH ãªããžã㪠URL ã®ã¿ãå ¥åããŸãã
git cloneæåŸã«ãã·ã³äžã®ãµã€ãã®ååã衚瀺ãããŸãã
ãµãŒã ããã§ãã¡ã€ã«ã宿ãããããšãã§ããŸã .gitlab-ci.yml.
ãããã€ã¡ã³ãã¿ã¹ã¯ãäœæãã
æåã« GitLab CI ã§è¡ãããšã¯ãéå»ã« Git ãªããžããªã§è¡ã£ãããšãšéåžžã«äŒŒãŠããŸãã ãã ããä»åã¯ãPantheon ãªããžããªã XNUMX çªç®ã®ãªã¢ãŒã Git ãœãŒã¹ãšããŠè¿œå ããã³ãŒãã GitLab ãã Pantheon ã«ããã·ã¥ããŸãããã
ãããè¡ãã«ã¯ãèšå®ããŸããã deploy О deploy:dev, Pantheon äžã®éçºç°å¢ã«ãããã€ããããã§ãã çµæã®ãã¡ã€ã« .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 äœåºŠãæŽæ°ããå¿
èŠãããã®ã¯ XNUMX ãæã ãã§ãã
æåŸã«ããã¡ã€ã«ã远å ãã³ããããéä¿¡ããŸã .gitlab-ci.yml GitLab äžã§ã
å±éã確èªãââã
ãã¹ãŠãæ£ããå®è¡ããå Žåãã¿ã¹ã¯ã¯ deploy:dev GitLab CI/CD ã§æ£åžžã«å®è¡ãããã³ããããéä¿¡ãããŸã .gitlab-ci.yml ãã³ããªã³ã§ã èŠãŠã¿ãŸãããã
ããŒãž ãªã¯ãšã¹ã ã¹ã¬ããã Pantheon ã«éä¿¡ãã
ããã§ã¯ãç§ã®ãæ°ã«å ¥ãã® Pantheon æ©èœã䜿çšããŸã- , ããã§ã¯ããªã³ããã³ãã§ Git ãã©ã³ãçšã®è¿œå ã® Pantheon ç°å¢ãäœæã§ããŸãã
, ãããã£ãŠããã®ã»ã¯ã·ã§ã³ã¯ã¹ãããã§ããŸãã ãã ããã¢ã¯ã»ã¹æš©ãããå Žåã¯ãGitLab ããŒãž ãªã¯ãšã¹ããã Pantheon äžã§ãã«ãéçºç°å¢ã®èªåäœæãèšå®ããããšã§ãçç£æ§ãå€§å¹ ã«åäžãããããšãã§ããŸãã
ãŸããæ¬¡ã䜿çšããŠããŒã«ã«ã«æ°ãã Git ãã©ã³ããäœæããŸããã git checkout -b multidev-supportã ã§ã¯ãããäžåºŠäœãã倿ŽããŠã¿ãŸããã .gitlab-ci.yml.
ç§ã¯ Pantheon ç°å¢åã«ããŒãž ãªã¯ãšã¹ãçªå·ãå«ããããšã奜ã¿ãŸãã ããšãã°ãæåã®ããŒãž ãªã¯ãšã¹ãã¯æ¬¡ã®ããã«ãªããŸãã mr-1ã XNUMXçª - 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 ãã©ã³ãã»ã¯ã·ã§ã³ãèŠãŠã¿ãŸãããã
ãã®çµæãç§ãã¡ã®ã¹ã¬ãã㯠mr-1 ãã³ããªã³ã«çããŸããã ãã©ã³ãããç°å¢ãäœæããŠã¿ãã mr-1.
ãã«ãéçºç°å¢ãäœæããŸãããGitLab ã«æ»ã£ãŠã»ã¯ã·ã§ã³ãèŠãŠã¿ãŸãããã æäœ > ç°å¢ã ã®ãšã³ããªã衚瀺ãããŸã dev О mr-1.
ããã¯ãšã³ããªã远å ããããã§ã environment ååã§ name О url CI/CD ã¿ã¹ã¯ã«çµã¿èŸŒã¿ãŸãã ç°å¢ãéãã¢ã€ã³ã³ãã¯ãªãã¯ãããšãPantheon äžã®ãã«ãéçºç°å¢ã® URL ã«ç§»åããŸãã
multidev ã®äœæãèªååãã
ååãšããŠãããã§åæ¢ããããŒãž ãªã¯ãšã¹ãããšã«ãã«ãéçºç°å¢ãäœæããããšãå¿ããªãã§ãã ããããã ãããã®ããã»ã¹ã¯èªååã§ããŸãã
Pantheon ã«ã¯ã³ãã³ãã©ã€ã³ ããŒã«ããããŸã ããã©ãããã©ãŒã ãèªåçã«æäœã§ããŸãã Terminus ã䜿çšãããšãã³ãã³ã ã©ã€ã³ãããã«ãéçºç°å¢ãäœæã§ããŸãã .
ããããã¹ãããã«ã¯ãæ°ããããŒãž ãªã¯ãšã¹ããå¿
èŠã§ãã ã䜿çšããŠæ°ãããã©ã³ããäœæããŸããã git checkout -b auto-multidev-creation.
GitLab CI/CD ã¿ã¹ã¯ã§ Terminus ã䜿çšããã«ã¯ãTerminus ã§ã®èªèšŒçšã®ãã·ã³ ããŒã¯ã³ãš Terminus ã§ã®ã³ã³ãã ã€ã¡ãŒãžãå¿ èŠã§ãã
ãå®å
šãªå Žæã«ä¿åããGitLab ã®ã°ããŒãã«ç°å¢å€æ°ãšããŠæ¬¡ã®ååã§è¿œå ããŸãã PANTHEON_MACHINE_TOKEN.
GitLab ç°å¢å€æ°ã®è¿œå æ¹æ³ãå¿ããå Žåã¯ãå®çŸ©ããå Žæã«æ»ã£ãŠãã ããã
PANTHEON_SITE.
Terminus ã䜿çšãã Dockerfile ã®äœæ
Docker ã䜿çšããªãå ŽåããŸãã¯ãã¡ã€ã«ã奜ãã§ã¯ãªãå Žå Dockerfileãç§ã®ç»åãæ®ã£ãŠãã ãã registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ãã®ã»ã¯ã·ã§ã³ã¯ã¹ãããããŠãã ããã
ããã§ããããžã§ã¯ãã® Dockerfile ãæ§ç¯ããŠé 眮ã§ããŸãã Pantheon ãšé£æºããããã« Terminus ã䜿çšã㊠Dockerfile ãäœæããŸãããã
Terminus 㯠PHP ã³ãã³ã ã©ã€ã³ ããŒã«ãªã®ã§ãPHP ã€ã¡ãŒãžããå§ããŸãããã Composer ãä»ã㊠Terminus ãã€ã³ã¹ããŒã«ããŠããã®ã§ã次ã䜿çšããŸãã ã ç§ãã¡ãäœæããŸã 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ã¹ã¯ãªããã¯ãã©ã€ããŒã ãã£ã¬ã¯ããªã«ããã ã ãã«ãéçºããžãã¯çšã®ã¹ã¯ãªããããããŸãã ã»ã¯ã·ã§ã³ãæŽæ°ããŸããã 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 ã®äœæã«ã¯æ°åãããå ŽåããããŸãã
次ã«ãPantheon ã® multidev ãªã¹ãã確èªããŸãã ããå¥è·¡ïŒ ãã«ãéçºç°å¢ mr-2 ããããã«ããã
ãŸãšã
ããŒãžãªã¯ãšã¹ããéããŠç°å¢ãèªåçã«äœæãå§ããŠãããç§ã®ããŒã ã¯ããã«æ¥œãããªããŸããã
GitLab ãš Pantheon ã®åŒ·åãªããŒã«ã䜿çšãããšãGitLab ã Pantheon ã«èªåçã«æ¥ç¶ã§ããŸãã
ç§ãã¡ã¯ GitLab CI/CD ã䜿çšããŠãããããã¯ãŒã¯ãããŒã«ã¯æ¡åŒµã®äœå°ããããŸãã å§ããããã®ã¢ã€ãã¢ãããã€ã玹ä»ããŸãã
- ãã«ãã¹ãããã远å ããŸãã
- èªåãã¹ãã远å ããŸãã
- ã³ãŒãæšæºãæºããããŠããããšã確èªããã¿ã¹ã¯ã远å ããŸãã
- 远å ãã .
GitLabãPantheonãèªååã«ã€ããŠã®ãæèŠããèãããã ããã
PS Pantheon ã®ã³ãã³ã ã©ã€ã³ ããŒã«ã§ãã Terminus ããåç¥ã§ããã? ?
ç§ãã¡ãã³ããªã³ã¯ãããŒãžã§ã³ 2 ã§è¯ãä»äºãããŸããã GitLab ãµããŒãä»ãã åãããžã§ã¯ãã®èšå®ã«ç
©ããããããªãå Žåã¯ããã®ãã©ã°ã€ã³ã詊ããŠãv2 ããŒã¿çã®ãã¹ãã«ååããŠãã ããã ã¿ãŒããã«ããŒã ã«ãšã£ãŠ build:project:create å¿
èŠãªã®ã¯ Pantheon ããŒã¯ã³ãš GitLab ããŒã¯ã³ã®ã¿ã§ãã 圌女ã¯ãComposer ãšèªåãã¹ããåãããµã³ãã« ãããžã§ã¯ãã® XNUMX ã€ããããã€ããGitLabãæ°ãã Pantheon ãµã€ãã«æ°ãããããžã§ã¯ããäœæããç°å¢å€æ°ãš SSH ããŒã䜿çšããŠããããæ¥ç¶ããŸãã
èè ã«ã€ããŠ
Andrew Taylor ã¯éçºè åãã®ããŒã«ãäœæããŠããŸã .
åºæïŒ habr.com
