ProHoster > Blog > Adminisztráció > 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.
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.
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.
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.
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.
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.
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:
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.
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 fokozatdeploy и feladatdeploy: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:
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.
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.
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.
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
Nézzük a Git Branches részt.
Ennek eredményeként a mi szálunk mr-1 eljutott a Pantheonba. Hozzunk létre környezetet egy ágból mr-1.
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 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.
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:
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:
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.
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:
Adjon hozzá egy felépítési lépést.
Automatikus tesztelés hozzáadása.
Adjon hozzá egy feladatot, hogy biztosítsa a kódszabványok betartását.
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.