A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása
A Pantheon vendégfejlesztői eszközeinek készítője arról beszél, hogyan automatizálható a WordPress telepítése GitLab CI/CD használatával.

В Panteon Fejlesztői kapcsolatokkal foglalkozom, ezért mindig új módszereket keresek, hogy segítsek a WordPress és Drupal fejlesztőinek munkafolyamataik automatizálási problémáinak megoldásában. Ennek érdekében szeretek új eszközökkel kísérletezni, és ezeket egymással kombinálni a hatékony működés érdekében.

Gyakran látom, hogy a fejlesztők egyetlen állomásozószerverrel küszködnek.

Öröm kivárni a sorát, hogy közbenső szervert használhasson, vagy az ügyfeleknek egy URL-t küldjön a következő megjegyzéssel: „Nézzenek ide, de még ne nézzenek ide.”

Multidev környezetek - az egyik menő Pantheon eszköz - megoldja ezt a problémát, mert velük igény szerint környezetet hozhat létre a Git-ágak számára. Minden multidev környezetnek saját URL-je és adatbázisa van, így a fejlesztők nyugodtan dolgozhatnak, ellenőrizhetik a minőséget és megkaphatják a jóváhagyást anélkül, hogy egymás lábujjára lépnének.

A Pantheon azonban nem rendelkezik verziófelügyeleti vagy folyamatos integrációs és telepítési (CI/CD) eszközökkel. De ez egy rugalmas platform, amellyel bármilyen eszközt integrálhat.

Azt is észrevettem, hogy a csapatok bizonyos eszközöket használnak a fejlesztéshez, másokat pedig az összeszereléshez és a telepítéshez.

Például különböző eszközökkel rendelkeznek a verzióvezérléshez és a CI/CD-hez. A kód szerkesztéséhez és a problémák diagnosztizálásához babrálnia kell és váltania kell az eszközök között.

tovább GitLab a fejlesztői eszközök teljes készlete van: verzióvezérléshez, jegyekhez, összevonási kérésekhez, kategóriájában legjobb CI/CD-folyamat, konténer-nyilvántartás és minden hasonló. Még nem találkoztam olyan alkalmazással, amely ennyit kínálna a fejlesztési munkafolyamat kezeléséhez.

Imádom az automatizálást, ezért megtanultam, hogyan kell összekapcsolni a Pantheont a GitLabbal, hogy a GitLab fő ágára vonatkozó kötelezettségvállalások a Pantheon fő fejlesztői környezetébe kerüljenek. A GitLab egyesítési kérelmei pedig kódot hozhatnak létre és telepíthetnek többfejlesztős környezetekben a Pantheonban.

Ebben az oktatóanyagban bemutatom, hogyan hozhat létre kapcsolatot a GitLab és a Pantheon között, és hogyan optimalizálhatja a WordPress és a Drupal munkafolyamatát.

Természetesen lehetséges, tükrözi a GitLab adattárat, de mindent megteszünk, hogy elmélyüljünk benne GitLab CI és a jövőben nem csak telepítésre használja ezt az eszközt.

Bevezetés

Ehhez a bejegyzéshez meg kell értenie, hogy a Pantheon minden webhelyet három elemre bont: kódra, adatbázisra és fájlokra.

A kód olyan CMS-fájlokat tartalmaz, mint a WordPress mag, beépülő modulok és témák. Ezeket a fájlokat a rendszer kezeli Git adattárak, amelyet a Pantheon üzemeltet, vagyis a GitLabból a Pantheonba telepíthetünk kódot a Git segítségével.
A Pantheonban lévő fájlok médiafájlok, vagyis a webhely képei. Általában a felhasználók töltik fel őket, és a Git figyelmen kívül hagyja őket.

Hozzon létre egy ingyenes fiókot, tudjon meg többet Pantheon munkafolyamat vagy iratkozz fel egy demóra a pantheon.io oldalon.

Feltételezések

A Pantheon és a GitLab projektem neve pantheon-gitlab-blog-demo. A projekt nevének egyedinek kell lennie. Itt egy WordPress oldallal fogunk dolgozni. Használhatja a Drupalt, de néhány dolgot módosítania kell.

használni fogom Git parancssorés dolgozhatsz benne grafikus felület, ha akarod.

Hozzon létre egy projektet

Először is alkossunk GitLab projekt (erre később még visszatérünk).

Most WordPress weboldal létrehozása a Pantheonon. Ezután telepítjük a WordPress-t a webhely irányítópultjára.

Ha viszket a keze, hogy módosítson valamit, például távolítsa el vagy adjon hozzá bővítményeket, legyen türelmes. A webhely még nem kapcsolódik a GitLabhoz, és azt szeretnénk, hogy minden kódmódosítás a GitLabon keresztül menjen át.

A WordPress telepítése után térjen vissza a Pantheon webhely irányítópultjára, és módosítsa a fejlesztési módot Gitre.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Első véglegesítés a GitLabon

Most át kell vinnie a kezdeti WordPress kódot a Pantheon webhelyről a GitLabba. Ehhez helyileg klónozzuk a kódot a Pantheon webhely Git-tárából, majd elküldjük a GitLab-tárba.

Hogy könnyebb és biztonságosabb legyen, adjunk hozzá egy SSH-kulcsot a Pantheonhoz és nem kell minden alkalommal jelszót megadnunk, amikor klónozunk egy Pantheon Git adattárat. Ugyanakkor már SSH-kulcs hozzáadása a GitLabhoz.

Ehhez helyileg klónozza a Pantheon webhelyet a parancs másolásával a webhely irányítópultján lévő Klónozás Git segítségével mezőből.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása
Ha segítségre van szüksége, olvassa el a dokumentációt a Git for Pantheon használatának megkezdése.

Most váltsunk git remote originhogy Pantheon helyett a GitLabra mutasson. Meg lehet csinálni командой git remote.

Menjünk a GitLab projekthez, és másoljuk ki a lerakat URL-jét a projekt részleteinek oldalán található Klónozás legördülő menüből. Válasszuk a Clone with SSH opciót, mert az SSH kulcsot már beállítottuk.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Alapértelmezésben git remote a kódtár helyi másolatához - origin. Ezen lehet változtatni c git remote set-url origin [URL репозитория GitLab], ahol a zárójelek helyett a tényleges URL-t írjuk be.

Végül elindítjuk git push origin master --forcehogy a WordPress kódot a Pantheonból a GitLabba tolja.

A –force opció csak egyszer szükséges. Aztán csapatokban git push nem lesz a GitLabon.

Hitelesítési adatok és változók beállítása

Emlékszel, hogyan adtunk hozzá helyi SSH-kulcsot a Pantheonba és a GitLab-ba való bejelentkezéshez? Az SSH token használható a GitLab és a Pantheon engedélyezésére.

A GitLab kiváló dokumentációval rendelkezik. Lássuk szakasz az SSH-kulcsokról a Docker végrehajtó használatakor az SSH-kulcsok GitLab CI/CD-vel történő használatáról szóló dokumentumban.

Most befejezzük az első két lépést: Hozzunk létre egy új SSH kulcspárt helyileg az ssh-keygen segítségével, és adjuk hozzá a privát kulcsot változóként a projekthez.

Akkor megkérdezzük SSH_PRIVATE_KEY mint GitLab CI/CD környezeti változó a projekt beállításaiban.
A harmadik és negyedik lépésben létrehozunk egy fájlt .gitlab-ci.yml ilyen tartalommal:

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"

Még ne véglegesítsük a fájlt .gitlab-ci.yml, akkor hozzá kell adnia valami mást is.

Most végrehajtjuk az ötödik lépést és adja hozzá az első lépésben létrehozott nyilvános kulcsot azokhoz a szolgáltatásokhoz, amelyekhez hozzá kell férnie az összeállítási környezetben.

Esetünkben a Pantheont a GitLabból szeretnénk elérni. Követjük a Pantheon dokumentumban található utasításokat SSH-kulcs hozzáadása a Pantheonhoz és hajtsa végre ezt a lépést.

Ne feledje: a privát SSH a GitLabban, a nyitott SSH a Pantheonban található.

Állítsunk be még néhány környezeti változót. Az első a PANTHEON_SITE. Ennek értéke a Pantheon webhely neve a gépeden.

A gépen lévő név a Clone with Git parancs végén található. Helyileg már klónoztad a webhelyet, így ez lesz a helyi lerakatkönyvtár neve.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Ezután állítsuk be a környezeti változót PANTHEON_GIT_URL. Ez a Pantheon webhely Git-tárhelyének URL-je, amelyet már használtunk.

Csak az SSH-tárhely URL-jét adja meg, anélkül git clone és a webhely neve a gépen a végén.

Fú. Ez kész, most befejezhetjük a fájlunkat .gitlab-ci.yml.

Hozzon létre egy telepítési feladatot

Amit kezdetben a GitLab CI-vel fogunk csinálni, nagyon hasonló ahhoz, amit a múltban a Git-tárolókkal tettünk. De ezúttal adjuk hozzá a Pantheon adattárat második távoli Git-forrásként, majd toljuk át a kódot a GitLabból a Pantheonba.

Ehhez konfiguráljuk fokozat deploy и feladat deploy:dev, mert a Pantheon fejlesztői környezetébe telepítjük. Az eredményül kapott fájl .gitlab-ci.yml Úgy fog kinézni:

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

Változók SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL ismerősnek kell tűnnie – ezeket a környezeti változókat korábban beállítottuk. Ezekkel a változókkal tudjuk majd használni a fájlban lévő értékeket .gitlab-ci.yml sokszor, és csak egy helyen kell frissíteni őket.

Végül adja hozzá, véglegesítse és küldje el a fájlt .gitlab-ci.yml a GitLabon.

A telepítés ellenőrzése

Ha mindent helyesen csináltunk, a feladat deploy:dev sikeresen fut a GitLab CI/CD-ben, és elküldi a véglegesítést .gitlab-ci.yml a Pantheonban. Nézzük meg.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Egyesítési kérelem szálak küldése a Pantheonnak

Itt a kedvenc Pantheon funkciómat fogjuk használni − multidev, ahol igény szerint további Pantheon-környezeteket hozhat létre a Git-ágak számára.

A multidevhez való hozzáférés korlátozott, így ez a rész kihagyható. De ha rendelkezik hozzáféréssel, komolyan növelheti a termelékenységet, ha beállítja a többfejlesztős környezetek automatikus létrehozását a Pantheonon a GitLab egyesítési kérelmeiből.

Először hozzunk létre egy új Git-ágat lokálisan git checkout -b multidev-support. Most megint változtassunk valamit .gitlab-ci.yml.

Szeretem az összevonási kérelem számát belefoglalni a Pantheon környezet nevébe. Például az első összevonási kérelem az mr-1, második - mr-2 stb.

Az összevonási kérelem megváltozik, ezért dinamikusan kell meghatároznunk a Pantheon ágneveket. Ez egyszerű a GitLabon – csak használnia kell előre meghatározott környezeti változók.

Elvihetjük $CI_MERGE_REQUEST_IIDaz összevonási kérelem számának megadásához. Alkalmazzuk mindezt a korábban megadott globális környezeti változókkal együtt, és adjunk hozzá egy új deploy:multidev feladatot a fájl végére. .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

Hasonló lesz a mi feladatunkhoz deploy:dev, csak az ágat küldik Pantheonba, nem master.

Hozzáadtuk és véglegesítettük a frissített fájlt .gitlab-ci.yml, és most nyomjunk egy új ágat a GitLab-hoz git push -u origin multidev-support.

Most hozzunk létre egy új egyesítési kérelmet az ágból multidev-supportnyomással Egyesítési kérelem létrehozása.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Az összevonási kérelem létrehozása után megnézzük, hogyan történik a CI/CD feladat végrehajtása deploy:multidev.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Nézd, egy új szálat küldtek a Pantheonnak. De ha a Pantheon oldal irányítópultján a multidev részre lépünk, akkor ott nem fogjuk látni az új környezetet

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Nézzük a Git Branches részt.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Ennek eredményeként a mi szálunk mr-1 eljutott a Pantheonba. Hozzunk létre környezetet egy ágból mr-1.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Létrehoztunk egy multidev környezetet, most térjünk vissza a GitLab-hoz és nézzük meg a részt Műveletek > Környezetek. A következő bejegyzéseket fogjuk látni dev и mr-1.

Ez azért van, mert hozzáadtunk egy bejegyzést environment Névvel name и url a CI/CD feladatokba. Ha rákattintunk a nyitott környezet ikonjára, a Pantheon multidev környezet URL-jére jutunk.

Automatizálja a multidev létrehozását

Elvileg itt megállhat, és ne felejtse el létrehozni egy multidev környezetet minden egyesítési kérelemhez, de ez a folyamat automatizálható.

A Pantheon rendelkezik egy parancssori eszközzel Végállomás, ahol automatikusan dolgozhat a platformmal. A Terminus lehetővé teszi multidev környezetek létrehozását a parancssorból – ideális GitLab CI.

Ennek teszteléséhez új egyesítési kérelemre van szükségünk. Hozzon létre egy új ágat a használatával git checkout -b auto-multidev-creation.

A Terminus GitLab CI/CD-feladatokban való használatához szükség van egy gépi tokenre a Terminussal történő hitelesítéshez és egy tárolóképre a Terminusszal.

Pantheon gép token létrehozása, mentse el egy biztonságos helyre, és adja hozzá globális környezeti változóként a GitLab-ban a névvel PANTHEON_MACHINE_TOKEN.

Ha elfelejtette, hogyan kell GitLab környezeti változókat hozzáadni, térjen vissza oda, ahol meghatároztuk PANTHEON_SITE.

Dockerfile létrehozása a Terminus segítségével

Ha nem használja a Dockert, vagy nem szereti a fájlokat Dockerfile, vegye a képem registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest és hagyja ki ezt a részt.

A GitLab rendelkezik egy konténer-nyilvántartással, ahol megépíthetjük és elhelyezhetjük projektünk Dockerfile-ját. Hozzunk létre egy Dockerfile-t a Terminusszal a Pantheonnal való együttműködéshez.

A Terminus egy PHP parancssori eszköz, ezért kezdjük a PHP képpel. A Terminust a Composeren keresztül telepítem, úgyhogy használni fogom hivatalos Docker Composer kép. Mi alkotunk Dockerfile a helyi adattár könyvtárában a következő tartalommal:

# 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"

Kövesse a szakasz képeinek összeállítására és elküldésére vonatkozó utasításokat Építsen és toljon képeket в konténer nyilvántartási dokumentációképet gyűjteni ahonnan Dockerfile és tolja be a GitLab-ba.

A szakasz megnyitása iktató hivatal a GitLab projektben. Ha minden a tervek szerint ment, a mi képünk is ott lesz. Írjon le egy linket a képcímkére - szükségünk van rá a fájlhoz .gitlab-ci.yml.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

rész script a problémában deploy:multidev kezd növekedni, ezért helyezzük át egy külön fájlba. Hozzon létre egy új fájlt 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

A szkript egy privát könyvtárban van és nem engedélyezi a webes hozzáférést a Pantheonhoz. Van egy szkriptünk a multidev logikánk számára. Most frissítsük a részt deploy:multidev fájlt .gitlab-ci.ymlhogy így alakuljon:

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

Meg kell győződnünk arról, hogy a feladatainkat a létrehozott egyedi képben hajtjuk végre, ezért adjunk hozzá egy definíciót image a regisztrációs URL-ről ide .gitlab-ci.yml. Ennek eredményeként egy ilyen fájlhoz jutottunk .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

Hozzáadás, véglegesítés és elküldés private/multidev-deploy.sh и .gitlab-ci.yml. Most visszatérünk a GitLab-hoz, és megvárjuk, amíg a CI/CD feladat befejeződik. Légy türelmes: a multidev létrehozása több percig is eltarthat.

Ezután nézzük meg a multidev listát a Pantheonon. Ó csoda! Multidev környezet mr-2 már itt.

A GitLab és a Pantheon összekapcsolása, valamint a Drupal és a WordPress munkafolyamatok optimalizálása

Következtetés

A csapatom sokkal szórakoztatóbb volt, amikor elkezdtük az egyesítési kérelmek automatikus megnyitását és a környezetek létrehozását.

A GitLab és a Pantheon hatékony eszközeivel automatikusan csatlakoztathatja a GitLabot a Pantheonhoz.

Mivel GitLab CI/CD-t használunk, a munkafolyamatunknak lesz hova fejlődnie. Íme néhány ötlet a kezdéshez:

Ossza meg velünk, mit gondol a GitLabról, a Pantheonról és az automatizálásról.

PS Tudta, hogy a Terminus, a Pantheon parancssori eszköze, bővíthető pluginekkel?

Mi a Pantheonnál jó munkát végeztünk a 2-es verziónkon plugin a Terminus build eszközökhöz GitLab támogatással. Ha nem szeretne az egyes projektek beállításaival bajlódni, próbálja ki ezt a bővítményt, és segítsen a v2 béta tesztelésében. A Terminus csapatának build:project:create Csak egy Pantheon tokenre és egy GitLab tokenre van szüksége. Bevezeti az egyik mintaprojektet a Composerrel és az automatizált teszteléssel, új projektet hoz létre a GitLab-ban, egy új Pantheon-webhelyet, és összekapcsolja őket környezeti változók és SSH-kulcsok segítségével.

A szerzőről

Andrew Taylor eszközöket hoz létre a fejlesztők számára Panteon.

Forrás: will.com

Hozzászólás