Муҳити multidev - яке аз асбобҳои аҷиби Pantheon - ин мушкилотро ҳал мекунад, зеро бо онҳо шумо метавонед барои филиалҳои Git мувофиқи талабот муҳитҳо эҷод кунед. Ҳар як муҳити multidev дорои URL ва пойгоҳи додаҳои худро дорад, бинобар ин таҳиягарон метавонанд оромона кор кунанд, сифатро тафтиш кунанд ва бидуни қадам ба ангуштони якдигар тасдиқ кунанд.
Аммо Pantheon асбобҳо барои назорати версия ё ҳамгироӣ ва густариши муттасил (CI/CD) надорад. Аммо ин як платформаи чандир аст, ки бо он шумо метавонед ҳама гуна асбобҳоро муттаҳид кунед.
Ман инчунин мушоҳида кардам, ки гурӯҳҳо асбобҳои муайянро барои таҳия ва асбобҳои гуногунро барои ҷамъоварӣ ва ҷойгиркунӣ истифода мебаранд.
Масалан, онҳо барои идоракунии версия ва CI/CD асбобҳои гуногун доранд. Барои таҳрир кардани код ва ташхиси мушкилот шумо бояд скрипка кунед ва байни асбобҳо гузаред.
Албатта мумкин, анбори оинаи GitLab, аммо мо ҳама чизро бо дастони худ мекунем, то онро фаҳмем GitLab CI ва дар оянда ин воситаро на танҳо барои ҷойгиркунӣ истифода баред.
Муқаддима
Барои ин паём, шумо бояд фаҳмед, ки Pantheon ҳар як сайтро ба се унсур тақсим мекунад: код, пойгоҳи додаҳо ва файлҳо.
Рамз дорои файлҳои CMS ба монанди асосии WordPress, плагинҳо ва мавзӯъҳо мебошад. Ин файлҳо дар Анбори Git, ки аз ҷониби Pantheon ҷойгир шудааст, маънои онро дорад, ки мо метавонем кодро аз GitLab ба Pantheon бо Git ҷойгир кунем.
Файлҳо дар Pantheon файлҳои медиавӣ, яъне тасвирҳо барои сайт мебошанд. Одатан, онҳо аз ҷониби корбарон бор карда мешаванд ва Git онҳоро нодида мегирад.
Агар шумо Docker-ро истифода набаред ё файлҳоро дӯст надоред Dockerfile, тасвири маро гиред registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ва ин бахшро гузаред.
GitLab феҳристи контейнер дорад, ки мо метавонем Dockerfile-ро барои лоиҳаи худ созем ва ҷойгир кунем. Биёед бо Terminus Dockerfile эҷод кунем, то бо Pantheon кор кунем.
Терминус як абзори сатри фармони 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.
#!/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