Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress
Pencipta alat pangembang tamu ing Pantheon ngomong babagan cara ngotomatisasi penyebaran WordPress nggunakake GitLab CI/CD.

Π’ Pantheon Aku kerja ing hubungan pangembang, mula aku tansah golek cara anyar kanggo mbantu pangembang WordPress lan Drupal ngatasi masalah otomatisasi ing alur kerja. Kanggo nindakake iki, aku seneng eksprimen karo alat anyar lan gabungke siji-sijine supaya bisa digunakake kanthi efektif.

Aku kerep ndeleng pangembang berjuang karo server pementasan siji.

Seneng banget ngenteni giliran sampeyan nggunakake server penengah utawa ngirim URL menyang klien kanthi cathetan: "Deleng kene, nanging aja katon ing kene."

Lingkungan multidev - salah sawijining alat Pantheon sing keren - ngrampungake masalah iki, amarga sampeyan bisa nggawe lingkungan kanggo cabang Git sing dikarepake. Saben lingkungan multidev duwe URL lan database dhewe, mula pangembang bisa kerja kanthi tenang, mriksa kualitas, lan entuk persetujuan tanpa ngindhari driji sikil siji-sijine.

Nanging Pantheon ora duwe alat kanggo kontrol versi utawa integrasi lan penyebaran terus (CI / CD). Nanging minangka platform fleksibel sing bisa nggabungake alat apa wae.

Aku uga weruh manawa tim nggunakake alat tartamtu kanggo pangembangan, lan beda kanggo perakitan lan penyebaran.

Contone, padha duwe piranti beda kanggo kontrol versi lan CI / CD. Sampeyan kudu muter-muter lan ngalih ing antarane alat kanggo ngowahi kode lan diagnosa masalah.

Ing GitLab ana set lengkap alat pangembangan: kanggo kontrol versi, karcis, gabung panjalukan, paling-ing-kelas CI / pipo CD, pendaptaran wadhah, lan kabeh kaya. Aku durung nemokake aplikasi sing nawakake akeh banget kanggo ngatur alur kerja pangembangan sampeyan.

Aku seneng otomatisasi, mula aku sinau carane nyambungake Pantheon menyang GitLab supaya komitmen menyang cabang utama ing GitLab disebarake menyang lingkungan pangembangan utama ing Pantheon. Lan nggabungake panjalukan ing GitLab bisa nggawe lan masang kode menyang lingkungan multidev ing Pantheon.

Ing tutorial iki, aku bakal nuntun sampeyan carane nyiyapake sambungan antarane GitLab lan Pantheon lan ngoptimalake alur kerja WordPress lan Drupal.

Mesthi wae bisa, pangilon repositori GitLab, nanging kita bakal nindakake kabeh karo tangan kita kanggo delve menyang GitLab CI lan ing mangsa ngarep nggunakake alat iki ora mung kanggo penyebaran.

Pambuka

Kanggo kirim iki, sampeyan kudu ngerti yen Pantheon ngrusak saben situs dadi telung unsur: kode, database, lan file.

Kode kasebut kalebu file CMS kayata inti WordPress, plugin, lan tema. File-file kasebut dikelola ing Repositori Git, sing dianakake dening Pantheon, tegese kita bisa masang kode saka GitLab menyang Pantheon karo Git.
File ing Pantheon minangka file media, yaiku gambar kanggo situs kasebut. Biasane diunggah dening pangguna lan Git ora nggatekake.

Nggawe akun gratis, ngerteni luwih akeh babagan Alur kerja Pantheon utawa mlebu kanggo demo ing pantheon.io.

Panyangka

Proyekku ing Pantheon lan GitLab diarani pantheon-gitlab-blog-demo. Jeneng proyek kudu unik. Ing kene kita bakal nggarap situs WordPress. Sampeyan bisa njupuk Drupal, nanging sampeyan kudu ngganti sawetara.

Aku bakal nggunakake baris printah Gitlan sampeyan bisa kerja ing antarmuka grafis, yen sampeyan pengin.

Nggawe proyek

Pisanan, ayo nggawe proyek GitLab (kita bakal bali menyang iki mengko).

Saiki nggawe situs web WordPress ing Pantheon. Banjur kita nginstal WordPress kanggo dashboard situs.

Yen tangan sampeyan gatel kanggo ngganti, contone, mbusak utawa nambah plugin, sabar. Situs kasebut durung nyambung menyang GitLab, lan kita pengin kabeh owah-owahan kode liwat GitLab.

Sawise nginstal WordPress, bali menyang dasbor situs web Pantheon lan ganti mode pangembangan menyang Git.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Komitmen awal ing GitLab

Saiki sampeyan kudu nransfer kode WordPress awal saka situs Pantheon menyang GitLab. Kanggo nindakake iki, kita tiron kode saka gudang Git situs Pantheon sacara lokal, banjur dikirim menyang gudang GitLab.

Supaya luwih gampang lan luwih aman, nambah tombol SSH kanggo Pantheon lan kita ora kudu ngetik sandhi saben-saben kita klone repositori Pantheon Git. Ing wektu sing padha wis nambah kunci SSH menyang GitLab.

Kanggo nindakake iki, kloning situs Pantheon sacara lokal kanthi nyalin printah saka lapangan Klone karo Git ing dashboard situs.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress
Yen sampeyan butuh bantuan, waca dokumentasi miwiti karo Git kanggo Pantheon.

Saiki ayo padha ganti git remote originkanggo nunjuk GitLab tinimbang Pantheon. Bisa ditindakake ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git remote.

Ayo menyang proyek GitLab lan nyalin URL repositori saka dropdown Klone ing kaca rincian proyek. Ayo milih opsi Klone karo SSH, amarga kita wis ngatur tombol SSH.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

standar git remote kanggo salinan lokal saka gudang kode - origin. Iki bisa diganti c git remote set-url origin [URL рСпозитория GitLab], ngendi tinimbang kurung kita ngetik URL nyata.

Pungkasan, kita miwiti git push origin master --forcekanggo push kode WordPress saka Pantheon menyang GitLab.

Opsi -force mung dibutuhake sapisan. Banjur ing tim git push ora bakal ana ing GitLab.

Nyetel kredensial lan variabel

Elinga carane nambah kunci SSH sacara lokal kanggo mlebu menyang Pantheon lan GitLab? Token SSH bisa digunakake kanggo menehi wewenang marang GitLab lan Pantheon.

GitLab nduweni dokumentasi sing apik banget. Ayo ndeleng bagean ing tombol SSH nalika nggunakake eksekutor Docker ing dokumen nggunakake tombol SSH karo GitLab CI / CD.

Saiki kita bakal ngrampungake rong langkah pisanan: Ayo nggawe pasangan kunci SSH anyar kanthi lokal nganggo ssh-keygen lan tambahake kunci pribadi minangka variabel menyang proyek kasebut..

Banjur kita bakal takon SSH_PRIVATE_KEY carane Variabel lingkungan GitLab CI/CD ing setelan proyek.
Ing langkah katelu lan kaping papat kita bakal nggawe file .gitlab-ci.yml kanthi isi kaya iki:

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"

Ayo kita ora nindakake file durung .gitlab-ci.yml, banjur sampeyan kudu nambah liyane.

Saiki kita nindakake langkah kaping lima lan tambahake kunci umum sing digawe ing langkah pisanan menyang layanan sing sampeyan butuh akses ing lingkungan mbangun.

Ing kasus kita, kita pengin ngakses Pantheon saka GitLab. Kita tindakake pandhuan ing dokumen Pantheon ing nambahake kunci SSH menyang Pantheon lan nindakake langkah iki.

Elinga: SSH pribadi ana ing GitLab, mbukak SSH ana ing Pantheon.

Ayo nyiyapake sawetara variabel lingkungan liyane. Sing pisanan diarani PANTHEON_SITE. Nilai iku jeneng situs Pantheon ing mesin sampeyan.

Jeneng ing mesin kadhaptar ing mburi Klone karo printah Git. Sampeyan wis nggawe kloning situs kasebut sacara lokal, mula iki bakal dadi jeneng direktori repositori lokal.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Sabanjure, ayo nyiyapake variabel lingkungan PANTHEON_GIT_URL. Iki minangka URL repositori Git kanggo situs Pantheon sing wis digunakake.

Ketik mung URL repositori SSH, tanpa git clone lan jeneng situs ing mesin ing mburi.

Phew. Wis rampung, saiki kita bisa ngrampungake file kita .gitlab-ci.yml.

Nggawe tugas panyebaran

Apa sing bakal ditindakake dhisik karo GitLab CI meh padha karo apa sing wis ditindakake karo repositori Git ing jaman kepungkur. Nanging wektu iki, ayo nambah repositori Pantheon minangka sumber Git remot kapindho, banjur push kode saka GitLab menyang Pantheon.

Kanggo nindakake iki, ayo ngatur panggung deploy ΠΈ tugas deploy:dev, amarga kita bakal nyebar menyang lingkungan pangembangan ing Pantheon. File asil .gitlab-ci.yml bakal katon kaya iki:

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

Variabel SSH_PRIVATE_KEY, PANTHEON_SITE ΠΈ PANTHEON_GIT_URL kudu katon akrab - kita nyiyapake variabel lingkungan kasebut sadurunge. Kanthi variabel kasebut, kita bakal bisa nggunakake nilai ing file kasebut .gitlab-ci.yml kakehan, lan padha mung kudu dianyari ing sak panggonan.

Pungkasan, tambahake, tundhuk lan kirim file kasebut .gitlab-ci.yml ing GitLab.

Priksa panyebaran

Yen kita nindakake kabeh kanthi bener, tugas kasebut deploy:dev bakal mlaku kanthi sukses ing GitLab CI/CD lan ngirim komitmen .gitlab-ci.yml ing Pantheon. Ayo dideleng.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Ngirim utas panjalukan gabungan menyang Pantheon

Ing kene kita bakal nggunakake fitur Pantheon favoritku βˆ’ multidev, ing ngendi sampeyan bisa nggawe lingkungan Pantheon tambahan kanggo cabang Git sing dikarepake.

Akses menyang multidev diwatesi, supaya bagean iki bisa dilewati. Nanging yen sampeyan duwe akses, sampeyan bisa nambah produktivitas kanthi nyiyapake nggawe otomatis lingkungan multidev ing Pantheon saka panjalukan gabungan GitLab.

Pisanan ayo nggawe cabang Git anyar kanthi nggunakake lokal git checkout -b multidev-support. Saiki ayo ngganti soko maneh .gitlab-ci.yml.

Aku seneng nyakup nomer panjalukan gabungan ing jeneng lingkungan Pantheon. Contone, panjalukan gabungan pisanan yaiku mr-1, kapindho - mr-2 lsp.

Panjaluk gabungan diganti, mula kita kudu nemtokake jeneng cabang Pantheon kanthi dinamis. Gampang ing GitLab - sampeyan mung kudu nggunakake variabel lingkungan sing wis ditemtokake.

Kita bisa njupuk $CI_MERGE_REQUEST_IIDkanggo nemtokake nomer panjalukan gabungan. Ayo ditrapake kabeh iki bebarengan karo variabel lingkungan global sing wis ditemtokake sadurunge lan tambahake tugas anyar: multidev ing mburi file .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

Bakal padha karo tugas kita deploy:dev, mung cabang dikirim menyang Pantheon, ora kanggo master.

Kita wis nambah lan nindakake file sing dianyari .gitlab-ci.yml, lan saiki ayo push cabang anyar menyang GitLab karo git push -u origin multidev-support.

Saiki ayo nggawe panjalukan gabungan anyar saka cabang multidev-supportkanthi mencet Nggawe panjalukan gabungan.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Sawise nggawe panjalukan gabungan, kita ndeleng carane tugas CI / CD dileksanakake deploy:multidev.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Deleng, utas anyar wis dikirim menyang Pantheon. Nanging yen kita pindhah menyang bagean multidev ing dashboard situs Pantheon, kita ora bakal weruh lingkungan anyar ing kana.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Ayo ndeleng bagean Git Branches.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

AkibatΓ©, thread kita mr-1 tekan Pantheon. Ayo nggawe lingkungan saka cabang mr-1.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Kita wis nggawe lingkungan multidev, saiki ayo bali menyang GitLab lan deleng bagean kasebut Operasi > Lingkungan. Kita bakal weruh entri kanggo dev ΠΈ mr-1.

Iki amarga kita nambah entri environment Kanthi jeneng name ΠΈ url menyang tugas CI / CD. Yen kita ngeklik lambang lingkungan mbukak, kita bakal digawa menyang URL lingkungan multidev ing Pantheon.

Otomatis nggawe multidev

Ing asas, sampeyan bisa mungkasi kene lan mung elinga nggawe lingkungan multidev kanggo saben request gabungan, nanging proses iki bisa otomatis.

Pantheon duwe alat baris perintah terminal, ing ngendi sampeyan bisa nggarap platform kanthi otomatis. Terminus ngijini sampeyan kanggo nggawe lingkungan multidev saka baris printah - becik kanggo GitLab CI.

Kita butuh panjalukan gabungan anyar kanggo nyoba iki. Ayo nggawe cabang anyar nggunakake git checkout -b auto-multidev-creation.

Kanggo nggunakake Terminus ing GitLab CI / tugas CD, sampeyan kudu token mesin kanggo otentikasi karo Terminus lan gambar wadhah karo Terminus.

Nggawe Token Mesin Pantheon, simpen ing panggonan sing aman lan tambahake minangka variabel lingkungan global ing GitLab kanthi jeneng PANTHEON_MACHINE_TOKEN.

Yen sampeyan kelalen carane nambah variabel lingkungan GitLab, bali menyang ngendi kita ditetepake PANTHEON_SITE.

Nggawe Dockerfile karo Terminus

Yen sampeyan ora nggunakake Docker utawa ora seneng file Dockerfile, njupuk gambarku registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest lan skip bagean iki.

GitLab duwe registri wadah, ing ngendi kita bisa mbangun lan nyelehake Dockerfile kanggo proyek kita. Ayo nggawe Dockerfile karo Terminus kanggo nggarap Pantheon.

Terminus minangka alat baris perintah PHP, mula ayo miwiti gambar PHP. Aku nginstal Terminus liwat Composer, supaya aku bakal nggunakake gambar Docker Composer resmi. Kita nggawe Dockerfile ing direktori repositori lokal kanthi isi ing ngisor iki:

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

Tindakake pandhuan kanggo ngrakit lan ngirim gambar saka bagean kasebut Mbangun lan push gambar Π² dokumentasi registri wadahkanggo ngumpulake gambar saka Dockerfile lan push menyang GitLab.

Bukak bagean kasebut Registry ing proyek GitLab. Yen kabeh mlaku miturut rencana, gambar kita bakal ana. Tulis link menyang tag gambar - kita butuh kanggo file kasebut .gitlab-ci.yml.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

Bagean script ing masalah deploy:multidev wiwit tuwuh, mula ayo pindhah menyang file sing kapisah. Nggawe file anyar 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

Skrip ing direktori pribadi lan ora ngidini akses web menyang Pantheon. Kita duwe skrip kanggo logika multidev kita. Ayo saiki nganyari bagean kasebut deploy:multidev ngajukake .gitlab-ci.ymlsupaya dadi kaya mangkene:

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

Kita kudu nggawe manawa tugas kita ditindakake ing gambar khusus sing digawe, mula ayo nambah definisi image saka URL pendaptaran kanggo .gitlab-ci.yml. AkibatΓ©, kita rampung karo file kaya iki .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

Tambah, tundhuk lan kirim private/multidev-deploy.sh ΠΈ .gitlab-ci.yml. Saiki bali menyang GitLab lan ngenteni tugas CI / CD rampung. Sabar: multidev bisa njupuk sawetara menit kanggo nggawe.

Banjur kita ndeleng dhaptar multidev ing Pantheon. Oh mukjijat! Lingkungan multidev mr-2 wis kene.

Cara Nyambungake GitLab lan Pantheon lan Ngoptimalake Alur Kerja Drupal lan WordPress

kesimpulan

Timku luwih seneng nalika miwiti panjalukan gabungan lan nggawe lingkungan kanthi otomatis.

Kanthi alat GitLab lan Pantheon sing kuat, sampeyan bisa nyambungake GitLab menyang Pantheon kanthi otomatis.

Amarga kita nggunakake GitLab CI/CD, alur kerja kita bakal tuwuh. Ing ngisor iki sawetara gagasan kanggo miwiti:

Ayo ngerti apa sing sampeyan pikirake babagan GitLab, Pantheon lan otomatisasi.

PS Apa sampeyan ngerti yen Terminus, alat baris perintah Pantheon, bisa ditambahi liwat plugins?

Kita ing Pantheon wis nindakake proyek apik ing versi 2 kita plugin kanggo alat mbangun Terminus kanthi dhukungan GitLab. Yen sampeyan ora pengin repot karo setelan kanggo saben project, nyoba plugin iki lan bantuan kita nyoba v2 beta. Kanggo tim Terminus build:project:create Sampeyan mung butuh token Pantheon lan token GitLab. Dheweke bakal masang salah sawijining proyek conto karo Composer lan tes otomatis, nggawe proyek anyar ing GitLab, situs Pantheon anyar, lan nyambungake nggunakake variabel lingkungan lan tombol SSH.

Babagan penulis

Andrew Taylor nggawe alat kanggo pangembang ing Pantheon.

Source: www.habr.com

Add a comment