แฉแแแแ แกแขแฃแแแ แ แแแแแแแแแ แแก แฎแแแกแแฌแงแแแแแก แจแแแฅแแแแแ Pantheon-แจแ แกแแฃแแ แแแก แแแแแ, แแฃ แ แแแแ แฃแแแ แแแฎแแแก WordPress-แแก แแแแแแแแแแก แแแขแแแแขแแแแชแแ GitLab CI/CD-แแก แแแแแงแแแแแแ.
ะ
แแ แฎแจแแ แแ แแฎแแแแ แแแแแแแแแ แแแก, แ แแแแแแแช แแแ แซแแแแ แแ แแ แแแแแแแก แกแแ แแแ แแแ.
แซแแแแแ แกแแกแแแแแแแแ แแแแแแแ แจแแแก แ แแแก แจแฃแแแแแฃแ แ แกแแ แแแ แแก แแแแแกแแงแแแแแแแ แแ แแแแแแขแแแก แแแฃแแแแแแ URL แจแแแแจแแแแ: โแจแแฎแแแ แแฅ, แแแแ แแ แฏแแ แแฅ แแ แแแแแแฎแแแโ.
แแแแ แแ แแแแแแแแก แแ แแฅแแก แแแกแขแ แฃแแแแขแแแ แแแ แกแแแก แแแแขแ แแแแกแแแแก แแ แฃแฌแงแแแขแ แแแขแแแ แแชแแแกแ แแ แแแแแแแแแแกแแแแก (CI/CD). แแแแ แแ แแก แแ แแก แแแฅแแแแ แแแแขแคแแ แแ, แ แแแแแแแแแช แจแแแแซแแแแ แแแแแกแแแแ แ แฎแแแกแแฌแงแแก แแแขแแแ แแ แแแ.
แแ แแกแแแ แจแแแแแฉแแแ, แ แแ แแฃแแแแแ แแงแแแแแแ แแแ แแแแฃแ แแแกแขแ แฃแแแแขแแแก แแแแแแแแ แแแแกแแแแก แแ แแแแกแฎแแแแแแฃแแก แจแแแ แแแแกแ แแ แแแแแแแแแแกแแแแก.
แแแแแแแแแ, แแแ แแฅแแ แกแฎแแแแแกแฎแแ แแแกแขแ แฃแแแแขแแแ แแแ แกแแแก แแแแขแ แแแแกแแแแก แแ CI/CD. แแแแแก แ แแแแฅแขแแ แแแแกแแแแก แแ แแ แแแแแแแแแก แแแแแแแกแขแแแแกแแแแก แฃแแแ แแแ แแ แแ แแแแแ แแแ แแแกแขแ แฃแแแแขแแแก แจแแ แแก.
แฌแแแก
แแ แแแงแแแ แก แแแขแแแแขแแแแชแแ, แแแแขแแ แแแกแฌแแแแ แ แแแแ แแแแฃแแแแจแแ แ แแแแแแแแ GitLab-แก, แ แแแ GitLab-แแก แแแแแแ แคแแแแแแแแ แแแแแแจแแ แแแฃแแ แแแแแแแฃแแแแแแ แแแแแแแกแแแก แแแแแแแแแก แแแแแแแแ แแแแก แแแแแแ แแแ แแแแจแ. แแ GitLab-แแก แจแแ แฌแงแแแก แแแแฎแแแแแก แจแแฃแซแแแ แจแแฅแแแแก แแ แแแแแแแแกแแก แแแแ แแแแแแแแจแ แแฃแแขแแแแแแก แแแ แแแแจแ.
แแ แกแแฎแแแแซแฆแแแแแแแจแ แแ แแแกแฌแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแงแแแแ แแแแจแแ แ GitLab-แกแ แแ Pantheon-แก แจแแ แแก แแ แ แแแแ แแแแแฃแแฏแแแแกแแ แแฅแแแแ WordPress แแ Drupal แกแแแฃแจแแ แแแแแแ.
แ แ แแฅแแ แฃแแแ แจแแกแแซแแแแแแแ,
แจแแกแแแแแ
แแ แแแกแขแแกแแแแก แแฅแแแ แฃแแแ แแแกแแแแแ, แ แแ แแแแแแแแ แแแแแแฃแ แกแแแขแก แกแแ แแแแแแแขแแ แงแแคแก: แแแแก, แแแแแชแแแแ แแแแแก แแ แคแแแแแแก.
แแแแ แแแแชแแแก CMS แคแแแแแแก, แ แแแแ แแชแแ WordPress แแแ แแแ, แแแแแแแขแแแ แแ แแแแแแ. แแก แคแแแแแแ แแแแ แแแแ
แคแแแแแแ แแแแแแแแจแ แแ แแก แแแแแ แคแแแแแแ, แแแฃ แกแฃแ แแแแแ แกแแแขแแกแแแแก. แ แแแแ แช แฌแแกแ, แแกแแแ แแขแแแ แแฃแแแ แแแแฎแแแ แแแแแแแก แแแแ แแ Git แฃแแฃแแแแแแงแแคแก แแแ.
แแแ แแฃแแแแ
แฉแแแ แแ แแแฅแขแ Pantheon-แกแ แแ GitLab-แแ แฐแฅแแแ pantheon-gitlab-blog-demo
. แแ แแแฅแขแแก แกแแฎแแแ แฃแแแ แแงแแก แฃแแแแแแฃแ แ. แแฅ แฉแแแ แแแแฃแจแแแแแ WordPress แกแแแขแแแ. แแฅแแแ แจแแแแซแแแแ แแแฆแแ Drupal, แแแแ แแ แแฅแแแ แฃแแแ แจแแชแแแแแ แ แแฆแแชแแแ.
แแแแแแแงแแแแ
แจแแฅแแแแแ แแ แแแฅแขแ
แฏแแ แจแแแฅแแแแ
แแฎแแ
แแฃ แฎแแแแแ แแขแแแแแ แ แแฆแแชแแก แจแแกแแชแแแแแแ, แแแแแแแแแ, แฌแแจแแแแ แแ แแแแแแขแแ แแแแแแแขแแแ, แแแแแแแแแแ แแแแฅแแแแแ. แกแแแขแ แฏแแ แแ แแ แแก แแแแแแจแแ แแแฃแแ GitLab-แแแ แแ แแแแแแ, แ แแ แแแแแก แงแแแแ แชแแแแแแแ GitLab-แแก แแแจแแแแแแ แแแฎแแแก.
WordPress-แแก แแแงแแแแแแก แจแแแแแ, แแแแ แฃแแแแ Pantheon แแแแกแแแขแแก แแแคแแแ แแ แจแแชแแแแแ แแแแแแแแ แแแแก แ แแแแแ Git-แแ.
แกแแฌแงแแกแ แแแจแแแแ GitLab-แแ
แแฎแแ แแฅแแแ แฃแแแ แแแแแแขแแแแ แกแแฌแงแแกแ WordPress แแแแ Pantheon แกแแแขแแแแ GitLab-แจแ. แแแแกแแแแแก แฉแแแ แแแแแแ แแแ แแแแก แแแแแแแแแก แกแแแขแแก Git แกแแชแแแแแแ แแแแแแฃแ แแ แแ แจแแแแแ แแแแแแแแแ แแแก GitLab แกแแชแแแจแ.
แฃแคแ แ แแแแแแ แแ แฃแกแแคแ แแฎแ แ แแ แแงแแก,
แแแแกแแแแแก แแแแแแ แแ แแแแแแแแแก แกแแแขแ แแแแแแฃแ แแ, แกแแแขแแก แแแคแแแ Clone with Git แแแแแแแ แแ แซแแแแแแก แแแแแ แแแแ.
แแฃ แแแฎแแแ แแแ แแญแแ แแแแแ, แฌแแแแแแฎแแ แแแแฃแแแแขแแชแแ
แแฎแแ แจแแแชแแแแแ git remote origin
แแแแแแแแแก แแแชแแแแ GitLab-แแ แแแฃแแแแแก. แแก แจแแแซแแแแ แแแแแแแแก ะบะพะผะฐะฝะดะพะน git remote
แแแแแ แแแแแแแแแ GitLab แแ แแแฅแขแแ แแ แแแแแแแแ แแ แกแแชแแแแก URL แฉแแแแกแแจแแแแ แแแแแแแแ แแ แแแฅแขแแก แแแขแแแแแแก แแแแ แแแ. แแแแแ แแแแ แฉแแแ Clone with SSH แแแ แแแแขแ, แ แแแแแ แฉแแแ แฃแแแ แแแแฅแแก SSH แแแแแแจแแก แแแแคแแแฃแ แแชแแ.
แกแขแแแแแ แขแฃแแแ git remote
แแแแแก แกแแชแแแแก แแแแแแแแ แแแ แแกแแแกแแแแก - origin
. แแก แจแแแซแแแแ แจแแแชแแแแแก แ git remote set-url origin [URL ัะตะฟะพะทะธัะพัะธั GitLab]
, แกแแแแช แคแ แฉแฎแแแแแแก แแแชแแแแ แจแแแแงแแแแ แคแแฅแขแแแ แแ URL-แก.
แกแแแแแแแ, แฉแแแ แแแฌแงแแแ git push origin master --force
WordPress แแแแแก แแแแแขแแแ แแแแแแแแแแแ GitLab-แจแ.
แซแแแแก แแแ แแแแขแ แกแแญแแ แแ แแฎแแแแ แแ แแฎแแ. แแแ แ แแฃแแแแแจแ
git push
แแก แแ แแฅแแแแ GitLab-แแ.
แกแแ แแแคแแแแขแแแแก แแ แชแแแแแแแแก แแแงแแแแแ
แแแฎแกแแแ, แ แแแแ แแแแแแแขแแ SSH แแแแแแจแ แแแแแแแแ แแแแ, แ แแแ แจแแฎแแแแแ แแแแแแแแกแ แแ GitLab-แจแ? SSH แแแขแแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก GitLab-แแกแ แแ Pantheon-แแก แแแขแแ แแแแชแแแกแแแแก.
GitLab-แก แแฅแแก แจแแกแแแแจแแแแ แแแแฃแแแแขแแชแแ. แฒแแแ แแแแฎแแ
แฉแแแ แแฎแแ แแแกแ แฃแแแแ แแแ แแแ แแ แแแแแฏแก: แแแแแ แจแแแฅแแแแ แแฎแแแ SSH แแแกแแฆแแแแแแก แฌแงแแแแ แแแแแแแแ แแแแ ssh-keygen-แแ แแ แแแแแแแขแแ แแแ แซแ แแแกแแฆแแแ, แ แแแแ แช แชแแแแแ แแ แแแฅแขแก.
แแแ แ แแแแแแฎแแแ SSH_PRIVATE_KEY
แ แแแแ แช
แแแกแแแ แแ แแแแแฎแ แแแแแฏแแแจแ แฉแแแ แจแแแฅแแแแ แคแแแแก .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 แแ แแก GitLab-แจแ, แฆแแ SSH แแ แแก แแแแแแแแจแ.
แแแแแ แแแแแงแแแแ แแแแแ แ แแแแแแแแ แแแ แแแแก แชแแแแแ. แแแ แแแแก แฐแฅแแแ PANTHEON_SITE. แแแกแ แฆแแ แแแฃแแแแ แแ แแก แแแแแแแแแก แกแแแขแแก แกแแฎแแแ แแฅแแแแก แแแแ แแขแแ.
แแแแ แแขแแก แกแแฎแแแ แแแแแแแแฃแแแ แแแแแแก Git แแ แซแแแแแแก แแแแแก. แแฅแแแ แฃแแแ แแแแฎแแแแแ แกแแแขแแก แแแแแแ แแแ แแแแแแแแ แแแแ, แแกแ แ แแ, แแก แแฅแแแแ แแแแแแแแ แแแ แกแแชแแแแก แแแ แแฅแขแแ แแแก แกแแฎแแแ.
แจแแแแแแ, แแแแแ แแแแแงแแแแ แแแ แแแแก แชแแแแแ PANTHEON_GIT_URL
. แแก แแ แแก Git แกแแชแแแแก URL แแแแแแแแแก แกแแแขแแกแแแแก, แ แแแแแแช แฉแแแ แฃแแแ แแแแแแแงแแแแ.
แจแแแงแแแแแ แแฎแแแแ SSH แกแแชแแแแก URL, แแแ แแจแ
git clone
แแ แแแแแก แแแแฅแแแแแ แกแแแขแแก แแแกแแฎแแแแแ.
แคแฃ. แแก แแแกแ แฃแแแแฃแแแ, แแฎแแ แฉแแแ แจแแแแแซแแแ แแแแแกแ แฃแแแ แฉแแแแ แคแแแแ .gitlab-ci.yml
.
แจแแฅแแแแแ แแแแแแแแแแก แแแแแแแแ
แ แแกแแช แฉแแแ แแแแแแแแ แแแแแ แแแแแแแแแแ GitLab CI-แแ, แซแแแแแ แฐแแแแก แแแแก, แ แแกแแช แฌแแ แกแฃแแจแ แแแแแแแแแ Git แกแแชแแแแแแ. แแแแ แแ แแแฏแแ แแ, แแแแแ แแแแแแแขแแ แแแแแแแแแก แกแแชแแแ, แ แแแแ แช แแแแ แ แแแกแขแแแชแแฃแ แ 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
แแแแแแแแจแ. แแแแแ แจแแแฎแแแแ.
แแแแ แแแแแแแแก แแแแฎแแแแแก แซแแคแแแแก แแแแแแแแ แแแแแแแแจแ
แแฅ แฉแแแ แแแแแแแงแแแแแ แฉแแแก แกแแงแแแ แแ แแแแแแแแแก แคแฃแแฅแชแแแก -
แฏแแ แแแแแ แจแแแฅแแแแ แแฎแแแ Git แคแแแแแแ แแแแแแแแ แแแแ แแแแแงแแแแแแ git checkout -b multidev-support
. แแฎแแ แแกแแ แจแแแชแแแแแ แ แแฆแแช .gitlab-ci.yml
.
แแ แแแแฌแแแก แจแแ แฌแงแแแก แแแแฎแแแแแก แแแแแ แ แแแแแแแแแก แแแ แแแแก แกแแฎแแแจแ. แแแแแแแแแ, แแแ แแแแ แจแแ แฌแงแแแก แแแแฎแแแแแ mr-1
, แแแแ แ - mr-2
แแ แ.แจ.
แจแแ แฌแงแแแก แแแแฎแแแแ แแชแแแแแ, แแแแขแแ แแแแแแแฃแ แแ แฃแแแ แแแแแกแแแฆแแ แแ แแแแแแแแแก แคแแแแแแแแแก แกแแฎแแแแแ. 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
.
แแฐแ, แแฎแแแ แแแแ แแแแแแแแแ แแแแแแแแจแ. แแแแ แแ แแฃ แแแแแแแแ แแแแแแแแแก แกแแแขแแก แแแคแแแ แแฃแแขแแแแแแก แแแแงแแคแแแแแแจแ, แแฅ แแฎแแ แแแ แแแแก แแแ แแแแแแแฎแแแ.
แแแแแ แแแแแแฎแแแแ Git Branches แแแแงแแคแแแแแแก.
แจแแแแแแ, แฉแแแแ แแแแ mr-1
แแแแแแแแจแ แแแฎแแแ. แจแแแฅแแแแ แแแ แแแ แคแแแแแแแแแ mr-1
.
แฉแแแ แจแแแฅแแแแแ multidev แแแ แแแ, แแฎแแ แแแแแ แแแแฃแแ แฃแแแแ GitLab-แก แแ แแแแแแฎแแแแ แแแแงแแคแแแแแแก แแแแ แแชแแแแ > แแแ แแแ. แฉแแแ แแแแฎแแแ แฉแแแแฌแแ แแแก แแแแกแแแแก dev
ะธ mr-1
.
แแก แแแแขแแ, แ แแ แฉแแแ แแแแแแแขแแ แฉแแแแฌแแ แ environment
แกแแฎแแแแ name
ะธ url
CI/CD แแแแชแแแแแจแ. แแฃ แแแแแฌแแแแฃแแแแ แฆแแ แแแ แแแแก แฎแแขแฃแแแแ, แแแแแแแงแแแแ แแแแแแแแแ แแฃแแขแแแแแ แแแ แแแแก URL-แแ.
multidev-แแก แจแแฅแแแแก แแแขแแแแขแแแแชแแ
แแ แแแชแแแจแ, แจแแแแซแแแแ แจแแฉแแ แแแ แแฅ แแ แฃแแ แแแแ แแแฎแกแแแแแ, แ แแ แจแแฅแแแแ multidev แแแ แแแ แแแแแแฃแแ แจแแ แฌแงแแแก แแแแฎแแแแแกแแแแก, แแแแ แแ แแก แแ แแชแแกแ แจแแแซแแแแ แแแขแแแแขแแแแ แแแฃแแ แแงแแก.
แแแแแแแแก แแฅแแก แแ แซแแแแแแก แฎแแแแก แแแกแขแ แฃแแแแขแ
แฉแแแ แแแญแแ แแแแ แแฎแแแ แจแแ แฌแงแแแก แแแแฎแแแแ แแแแก แจแแกแแแแฌแแแแแแ. แแแแแ แจแแแฅแแแแ แแฎแแแ แคแแแแแแ แแแแแงแแแแแแ git checkout -b auto-multidev-creation
.
Terminus-แแก GitLab CI/CD แแแแชแแแแแจแ แแแแแกแแงแแแแแแแ, แแญแแ แแแแแ แแแแฅแแแฃแ แ แแแขแแแ Terminus-แแ แแแแแแขแแคแแแแชแแแกแแแแก แแ แแแแขแแแแแ แแก แกแฃแ แแแ Terminus-แแ.
PANTHEON_MACHINE_TOKEN
.
แแฃ แแแแแแแฌแงแแแ แ แแแแ แแแแแแขแแ GitLab แแแ แแแแก แชแแแแแแแ, แแแแ แฃแแแแ แแฅ, แกแแแแช แฉแแแ แแแแแกแแแฆแแ แแ
PANTHEON_SITE
.
Dockerfile-แแก แจแแฅแแแ Terminus-แแ
แแฃ แแ แแงแแแแแ Docker-แก แแ แแ แแแแฌแแแ แคแแแแแแ Dockerfile
แแแฆแ แฉแแแ แกแฃแ แแแ registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
แแ แแแแแขแแแแ แแก แแแแงแแคแแแแแ.
Terminus แแ แแก PHP แแ แซแแแแแแก แฎแแแแก แแแกแขแ แฃแแแแขแ, แแกแ แ แแ, แแแแแฌแงแแ PHP แกแฃแ แแแแ. แแ แแแงแแแแ 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-แแก แจแแฅแแแแก แจแแแซแแแแ แ แแแแแแแแ แฌแฃแแ แแแกแญแแ แแแก.
แจแแแแแ แฉแแแ แแแแแแฎแแแแแ แแฃแแขแแแแแแแแก แกแแแก แแแแแแแแแ. แแฐ แกแแกแฌแแฃแแ! Multidev แแแ แแแ mr-2
แฃแแแ แแฅ.
แแแกแแแแ
แฉแแแก แแฃแแแก แแแชแแแแแแ แแแขแ แกแแแแแแแแแ แฐแฅแแแแ, แ แแแแกแแช แแแแแฌแงแแ แจแแ แฌแงแแแก แแแแฎแแแแแแแก แแแฎแกแแ แแ แแแ แแแแก แแแขแแแแขแฃแ แแ แจแแฅแแแ.
GitLab-แแกแ แแ Pantheon-แแก แแซแแแแ แ แฎแแแกแแฌแงแแแแแ, แจแแแแซแแแแ GitLab แแแขแแแแขแฃแ แแ แแแฃแแแแจแแ แแ แแแแแแแแก.
แแแแแแแแ แฉแแแ แแแงแแแแแ GitLab CI/CD-แก, แฉแแแแก แกแแแฃแจแแ แแ แแชแแกแก แแฅแแแแ แแแแแแ, แ แแ แแแแแแ แแแก. แแฅ แแ แแก แ แแแแแแแแแ แแแแ แแแกแแฌแงแแแแ:
- แแแแแแขแแ แแจแแแแแแแแแก แแขแแแ.
- แแแแแแขแแ แแแขแแแแขแฃแ แ แขแแกแขแแ แแแ.
- แแแแแแขแแ แแแแแแแแ, แ แแแ แฃแแ แฃแแแแแงแแ แแแแแก แกแขแแแแแ แขแแแแก แแแชแแ.
- แแแแแขแแแ
แแแแแแแฃแ แ แแแแแแแชแแแก แฃแกแแคแ แแฎแแแแแก แขแแกแขแแ แแแ .
แจแแแแแขแงแแแแแแ แ แแก แคแแฅแ แแแ GitLab-แแก, Pantheon-แแกแ แแ แแแขแแแแขแแแแชแแแก แจแแกแแฎแแ.
PS แแชแแแแ, แ แแ Terminus, แแแแแแแแแก แแ แซแแแแแแก แฎแแแแก แแแกแขแ แฃแแแแขแ,
แฉแแแ แแแแแแแแจแ แแแ แแ แกแแแฃแจแแ แแแแแแแแแ แฉแแแแ 2 แแแ แกแแแแ build:project:create
แแฅแแแ แแฎแแแแ แแแแแแแแแก แแแขแแแ แแ GitLab-แแก แแแขแแแ แแญแแ แแแแแ. แแก แแแแแแแแกแแแก แแ แ-แแ แ แกแแแแแฃแจแ แแ แแแฅแขแก Composer-แแ แแ แแแขแแแแขแฃแ แ แขแแกแขแแ แแแแ, แจแแฅแแแแก แแฎแแ แแ แแแฅแขแก GitLab-แจแ, แแฎแแ แแแแแแแแแก แกแแแขแแ แแ แแแแแแแจแแ แแแก แแแ แแแ แแแแก แชแแแแแแแแก แแ SSH แแแแแแจแแแแก แแแแแงแแแแแแ.
แจแแกแแฎแแ แแแขแแ แ
แแแแ แแฃ แขแแแแแ แ แฅแแแแก แแแกแขแ แฃแแแแขแแแก แแแแแแแแแ แแแแกแแแแก
แฌแงแแ แ: www.habr.com