วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress
ผู้สร้างเครื่องมือสำหรับนักพัฒนารับเชิญของเราที่ Pantheon พูดถึงวิธีทำให้ WordPress ใช้งานได้โดยอัตโนมัติโดยใช้ GitLab CI/CD

В โบสถ์ของเทพเจ้าทั้งหลาย ฉันทำงานในฝ่ายนักพัฒนาสัมพันธ์ ดังนั้นฉันจึงมองหาวิธีใหม่ๆ อยู่เสมอเพื่อช่วยนักพัฒนา WordPress และ Drupal แก้ไขปัญหาอัตโนมัติในขั้นตอนการทำงานของพวกเขา ในการทำเช่นนี้ ฉันชอบทดลองใช้เครื่องมือใหม่ๆ และรวมเข้าด้วยกันเพื่อให้ทำงานได้อย่างมีประสิทธิภาพ

ฉันมักจะเห็นนักพัฒนาประสบปัญหากับเซิร์ฟเวอร์ staging เดียว

เป็นเรื่องน่ายินดีอย่างยิ่งที่ได้รอถึงคราวของคุณเพื่อใช้เซิร์ฟเวอร์ระดับกลางหรือส่ง URL ให้กับลูกค้าพร้อมข้อความว่า “ดูที่นี่ แต่อย่าเพิ่งดูที่นี่”

สภาพแวดล้อมแบบ Multidev - หนึ่งในเครื่องมือ Pantheon ที่ยอดเยี่ยม - แก้ปัญหานี้เนื่องจากคุณสามารถสร้างสภาพแวดล้อมสำหรับสาขา Git ได้ตามต้องการ สภาพแวดล้อมแบบ multidev แต่ละแห่งมี URL และฐานข้อมูลของตัวเอง ดังนั้นนักพัฒนาจึงสามารถทำงานอย่างเงียบๆ ตรวจสอบคุณภาพ และได้รับการอนุมัติโดยไม่ต้องเหยียบเท้าของกันและกัน

แต่ Pantheon ไม่มีเครื่องมือสำหรับการควบคุมเวอร์ชันหรือการบูรณาการและการปรับใช้อย่างต่อเนื่อง (CI/CD) แต่เป็นแพลตฟอร์มที่ยืดหยุ่นซึ่งคุณสามารถรวมเครื่องมือต่างๆ ได้

ฉันยังสังเกตเห็นว่าทีมต่างๆ ใช้เครื่องมือบางอย่างเพื่อการพัฒนา และเครื่องมือที่แตกต่างกันสำหรับการประกอบและการปรับใช้

ตัวอย่างเช่น มีเครื่องมือที่แตกต่างกันสำหรับการควบคุมเวอร์ชันและ CI/CD คุณต้องเล่นซอและสลับระหว่างเครื่องมือต่างๆ เพื่อแก้ไขโค้ดและวินิจฉัยปัญหา

На GitLab มีเครื่องมือการพัฒนาครบชุด: สำหรับการควบคุมเวอร์ชัน ตั๋ว คำขอรวม ไปป์ไลน์ CI/CD ที่ดีที่สุดในระดับเดียวกัน รีจีสทรีคอนเทนเนอร์ และทุกอย่างที่คล้ายกัน ฉันยังไม่เจอแอปพลิเคชันที่ให้อะไรมากมายในการจัดการขั้นตอนการพัฒนาของคุณ

ฉันชอบระบบอัตโนมัติ ดังนั้นฉันจึงได้เรียนรู้วิธีการเชื่อมต่อ Pantheon กับ GitLab เพื่อให้คอมมิตกับสาขาหลักบน GitLab ถูกนำไปใช้กับสภาพแวดล้อมการพัฒนาหลักใน Pantheon และคำขอรวมบน GitLab สามารถสร้างและปรับใช้โค้ดกับสภาพแวดล้อม multidev ใน Pantheon

ในบทช่วยสอนนี้ ฉันจะอธิบายวิธีตั้งค่าการเชื่อมต่อระหว่าง GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ WordPress และ Drupal ของคุณ

แน่นอนว่าเป็นไปได้ มิเรอร์ที่เก็บ GitLabแต่เราจะทำทุกอย่างด้วยมือของเราเพื่อเจาะลึก GitLab CI และในอนาคตให้ใช้เครื่องมือนี้ไม่เพียงแต่สำหรับการปรับใช้เท่านั้น

การแนะนำ

สำหรับโพสต์นี้ คุณต้องเข้าใจว่า Pantheon แบ่งแต่ละไซต์ออกเป็นสามองค์ประกอบ: รหัส ฐานข้อมูล และไฟล์

โค้ดนี้ประกอบด้วยไฟล์ CMS เช่น WordPress core, ปลั๊กอิน และธีม ไฟล์เหล่านี้ได้รับการจัดการใน ที่เก็บ Gitซึ่งโฮสต์โดย Pantheon ซึ่งหมายความว่าเราสามารถปรับใช้โค้ดจาก GitLab ไปยัง Pantheon ด้วย Git
ไฟล์ใน Pantheon คือไฟล์สื่อ กล่าวคือ รูปภาพสำหรับไซต์ โดยปกติแล้วผู้ใช้จะอัปโหลดและ Git จะเพิกเฉยต่อพวกเขา

สร้างบัญชีฟรี, ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ ขั้นตอนการทำงานของแพนธีออน หรือ ลงทะเบียนเพื่อรับการสาธิต ที่ pantheon.io

สมมติฐาน

โครงการของฉันใน Pantheon และ GitLab มีชื่อว่า pantheon-gitlab-blog-demo. ชื่อโปรเจ็กต์ต้องไม่ซ้ำกัน ที่นี่เราจะทำงานร่วมกับไซต์ WordPress คุณสามารถใช้ Drupal ได้ แต่คุณจะต้องเปลี่ยนแปลงบางสิ่ง

ฉันจะใช้ บรรทัดคำสั่งคอมไพล์และคุณสามารถทำงานได้ อินเตอร์เฟซแบบกราฟิก, ถ้าคุณต้องการ.

สร้างโครงการ

ก่อนอื่นมาสร้างกันก่อน โครงการ GitLab (เราจะกลับมาที่นี้ในภายหลัง)

ขณะนี้ การสร้างเว็บไซต์ WordPress บน Pantheon. จากนั้นเราจะติดตั้ง WordPress สำหรับแดชบอร์ดของไซต์

หากมือของคุณอยากเปลี่ยนแปลงบางสิ่ง เช่น ลบหรือเพิ่มปลั๊กอิน ให้อดทน ไซต์ยังไม่ได้เชื่อมต่อกับ GitLab และเราต้องการให้การเปลี่ยนแปลงโค้ดทั้งหมดผ่าน GitLab

เมื่อเราติดตั้ง WordPress แล้ว ให้กลับไปที่แดชบอร์ดเว็บไซต์ Pantheon และเปลี่ยนโหมดการพัฒนาเป็น Git

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

ความมุ่งมั่นเริ่มต้นบน GitLab

ตอนนี้คุณต้องถ่ายโอนโค้ด WordPress เริ่มต้นจากไซต์ Pantheon ไปยัง GitLab ในการดำเนินการนี้ เราโคลนโค้ดจากที่เก็บ Git ของไซต์ Pantheon ในเครื่อง จากนั้นจึงส่งไปยังที่เก็บ GitLab

เพื่อให้ง่ายและปลอดภัยยิ่งขึ้น เพิ่มคีย์ SSH ให้กับ Pantheon และเราจะไม่ต้องป้อนรหัสผ่านทุกครั้งที่เราโคลนพื้นที่เก็บข้อมูล Pantheon Git ในเวลาเดียวกันแล้ว เพิ่มคีย์ SSH ให้กับ GitLab.

ในการดำเนินการนี้ ให้โคลนเว็บไซต์ Pantheon ในเครื่องโดยคัดลอกคำสั่งจากช่อง Clone with Git บนแดชบอร์ดของเว็บไซต์

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress
หากคุณต้องการความช่วยเหลือ โปรดอ่านเอกสารประกอบ เริ่มต้นใช้งาน Git สำหรับ Pantheon.

ตอนนี้เรามาเปลี่ยนกัน git remote originเพื่อชี้ไปที่ GitLab แทน Pantheon ก็สามารถทำได้ командой git remote.

ไปที่โปรเจ็กต์ GitLab และคัดลอก URL ของที่เก็บจากดรอปดาวน์ Clone ในหน้ารายละเอียดโปรเจ็กต์ มาเลือกตัวเลือก Clone with SSH กัน เนื่องจากเราได้กำหนดค่าคีย์ SSH แล้ว

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

Поумолчанию git remote สำหรับสำเนาที่เก็บโค้ดในเครื่อง - origin. สิ่งนี้สามารถเปลี่ยนแปลงได้ค git remote set-url origin [URL репозитория GitLab]โดยที่เราใส่ URL จริงแทนวงเล็บ

ในที่สุดเราก็เปิดตัว git push origin master --forceเพื่อส่งโค้ด WordPress จาก Pantheon ไปยัง GitLab

ตัวเลือก –force จำเป็นเพียงครั้งเดียวเท่านั้น แล้วในทีม git push มันจะไม่มีบน GitLab

การตั้งค่าข้อมูลรับรองและตัวแปร

จำได้ไหมว่าเราเพิ่มคีย์ SSH ในเครื่องเพื่อเข้าสู่ระบบ Pantheon และ GitLab ได้อย่างไร โทเค็น SSH สามารถใช้เพื่ออนุญาต GitLab และ Pantheon

GitLab มีเอกสารที่ยอดเยี่ยม มาดูกัน ส่วนบนคีย์ SSH เมื่อใช้ตัวดำเนินการ Docker ในเอกสารเกี่ยวกับการใช้คีย์ SSH กับ GitLab CI/CD.

ตอนนี้เราจะดำเนินการสองขั้นตอนแรกให้เสร็จสิ้น: มาสร้างคู่คีย์ SSH ใหม่ภายในเครื่องด้วย ssh-keygen และเพิ่มคีย์ส่วนตัวเป็นตัวแปรให้กับโปรเจ็กต์.

แล้วเราจะถาม SSH_PRIVATE_KEY ในขณะที่ ตัวแปรสภาพแวดล้อม GitLab CI/CD ในการตั้งค่าโปรเจ็กต์
ในขั้นตอนที่สามและสี่ เราจะสร้างไฟล์ .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จากนั้นคุณจะต้องเพิ่มอย่างอื่นลงไป

ตอนนี้เราทำขั้นตอนที่ห้าและ เพิ่มรหัสสาธารณะที่คุณสร้างในขั้นตอนแรกให้กับบริการที่คุณต้องการเข้าถึงในสภาพแวดล้อมการสร้าง.

ในกรณีของเรา เราต้องการเข้าถึง Pantheon จาก GitLab เราปฏิบัติตามคำแนะนำในเอกสาร Pantheon เมื่อ การเพิ่มคีย์ SSH ให้กับ Pantheon และทำตามขั้นตอนนี้

ข้อควรจำ: SSH ส่วนตัวอยู่ใน GitLab, SSH แบบเปิดอยู่ใน Pantheon

มาตั้งค่าตัวแปรสภาพแวดล้อมอีกสองสามตัวกัน อันแรกเรียกว่า PANTHEON_SITE ค่าของมันคือชื่อของไซต์ Pantheon บนเครื่องของคุณ

ชื่อบนเครื่องจะแสดงอยู่ที่ส่วนท้ายของคำสั่ง Clone with Git คุณได้โคลนไซต์ในเครื่องแล้ว ดังนั้นนี่จะเป็นชื่อของไดเร็กทอรีที่เก็บในเครื่อง

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

ต่อไป มาตั้งค่าตัวแปรสภาพแวดล้อมกัน PANTHEON_GIT_URL. นี่คือ URL ที่เก็บ Git สำหรับไซต์ Pantheon ที่เราใช้อยู่แล้ว

ป้อนเฉพาะ URL ที่เก็บ SSH โดยไม่ต้องใส่ git clone และชื่อไซต์บนเครื่องตอนท้าย

วุ้ย. เสร็จแล้ว ตอนนี้เราสามารถทำไฟล์ของเราให้เสร็จได้แล้ว .gitlab-ci.yml.

สร้างงานการปรับใช้

สิ่งที่เราจะทำใน GitLab CI ในตอนแรกนั้นคล้ายคลึงกับสิ่งที่เราทำกับที่เก็บ Git ในอดีตมาก แต่คราวนี้ เราจะเพิ่มพื้นที่เก็บข้อมูล Pantheon เป็นแหล่ง Git ระยะไกลแหล่งที่สอง จากนั้นจึงพุชโค้ดจาก GitLab ไปยัง Pantheon

ในการดำเนินการนี้ มากำหนดค่ากัน เวที deploy и งาน deploy:devเพราะเราจะปรับใช้กับสภาพแวดล้อมการพัฒนาบน Pantheon ไฟล์ผลลัพธ์ .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 และส่งคอมมิต .gitlab-ci.yml ที่วิหารแพนธีออน มาดูกันดีกว่า

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

กำลังส่งเธรดคำขอรวมไปยัง Pantheon

ที่นี่เราจะใช้คุณสมบัติ Pantheon ที่ฉันชื่นชอบ - มัลติเดฟซึ่งคุณสามารถสร้างสภาพแวดล้อม Pantheon เพิ่มเติมสำหรับสาขา Git ได้ตามความต้องการ

การเข้าถึง multidev มีจำกัดจึงสามารถข้ามส่วนนี้ได้ แต่ถ้าคุณมีสิทธิ์เข้าถึง คุณสามารถเพิ่มผลผลิตได้อย่างจริงจังโดยการตั้งค่าการสร้างสภาพแวดล้อม multidev บน Pantheon โดยอัตโนมัติจากคำขอรวม GitLab

ก่อนอื่นเรามาสร้างสาขา Git ใหม่โดยใช้ในเครื่องกันก่อน git checkout -b multidev-support. ตอนนี้เรามาเปลี่ยนบางสิ่งบางอย่างอีกครั้งใน .gitlab-ci.yml.

ฉันต้องการรวมหมายเลขคำขอรวมไว้ในชื่อสภาพแวดล้อมของ Pantheon ตัวอย่างเช่น คำขอรวมครั้งแรกคือ mr-1, ที่สอง - mr-2 ฯลฯ

คำขอรวมมีการเปลี่ยนแปลง ดังนั้นเราจึงจำเป็นต้องกำหนดชื่อสาขา Pantheon แบบไดนามิก เป็นเรื่องง่ายบน GitLab คุณเพียงแค่ต้องใช้ ตัวแปรสภาพแวดล้อมที่กำหนดไว้ล่วงหน้า.

เรารับได้ $CI_MERGE_REQUEST_IIDเพื่อระบุหมายเลขคำขอรวม ลองใช้ทั้งหมดนี้ร่วมกับตัวแปรสภาพแวดล้อมส่วนกลางที่เราระบุไว้ก่อนหน้านี้ และเพิ่มงานการปรับใช้: 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มีเพียงสาขาเท่านั้นที่ถูกส่งไปยัง Pantheon ไม่ใช่ไป master.

เราได้เพิ่มและคอมมิตไฟล์ที่อัปเดตแล้ว .gitlab-ci.ymlและตอนนี้เรามาผลักดันสาขาใหม่ไปที่ GitLab ด้วย git push -u origin multidev-support.

ตอนนี้เรามาสร้างคำขอรวมใหม่จากสาขากัน multidev-supportโดยกด สร้างคำขอรวม.

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

เมื่อสร้างคำขอรวมแล้ว เราจะดูว่างาน CI/CD ดำเนินการอย่างไร deploy:multidev.

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

ดูสิ มีการส่งกระทู้ใหม่ไปที่ Pantheon แล้ว แต่ถ้าเราไปที่ส่วน multidev บนแดชบอร์ดของไซต์ Pantheon เราจะไม่เห็นสภาพแวดล้อมใหม่ที่นั่น

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

มาดูในส่วนของ Git Branches กันดีกว่า

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

ส่งผลให้กระทู้ของเรา mr-1 ไปถึงแพนธีออนแล้ว มาสร้างสภาพแวดล้อมจากสาขากันเถอะ mr-1.

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

เราได้สร้างสภาพแวดล้อมแบบ multidev แล้ว ตอนนี้กลับไปที่ GitLab และดูที่ส่วนนี้กัน การดำเนินงาน > สภาพแวดล้อม. เราจะเห็นรายการสำหรับ dev и mr-1.

นี่เป็นเพราะเราได้เพิ่มรายการ environment ด้วยชื่อ name и url ในงาน CI/CD หากเราคลิกที่ไอคอนสภาพแวดล้อมแบบเปิด เราจะไปที่ URL ของสภาพแวดล้อมแบบ multidev บน Pantheon

สร้าง multidev โดยอัตโนมัติ

โดยหลักการแล้ว คุณสามารถหยุดที่นี่และอย่าลืมสร้างสภาพแวดล้อมแบบ multidev สำหรับคำขอรวมแต่ละรายการ แต่กระบวนการนี้สามารถดำเนินการได้โดยอัตโนมัติ

Pantheon มีเครื่องมือบรรทัดคำสั่ง ปลายทางซึ่งคุณสามารถทำงานกับแพลตฟอร์มได้โดยอัตโนมัติ Terminus ช่วยให้คุณสร้างสภาพแวดล้อม multidev จากบรรทัดคำสั่ง - เหมาะสำหรับ GitLab CI.

เราจำเป็นต้องมีคำขอรวมใหม่เพื่อทดสอบสิ่งนี้ มาสร้างสาขาใหม่โดยใช้ git checkout -b auto-multidev-creation.

หากต้องการใช้ Terminus ในงาน GitLab CI/CD คุณต้องมีโทเค็นเครื่องสำหรับการตรวจสอบสิทธิ์ด้วย Terminus และคอนเทนเนอร์อิมเมจด้วย Terminus

การสร้างโทเค็นเครื่อง Pantheonให้บันทึกไว้ในที่ปลอดภัยและเพิ่มเป็นตัวแปรสภาพแวดล้อมส่วนกลางใน GitLab ด้วยชื่อ PANTHEON_MACHINE_TOKEN.

หากคุณลืมวิธีเพิ่มตัวแปรสภาพแวดล้อม GitLab ให้กลับไปที่ที่เรากำหนดไว้ PANTHEON_SITE.

การสร้าง Dockerfile ด้วย Terminus

หากคุณไม่ได้ใช้ Docker หรือไม่ชอบไฟล์ Dockerfile, ถ่ายรูปของฉัน registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest และข้ามส่วนนี้ไป

GitLab มีรีจิสตรีคอนเทนเนอร์ซึ่งเราสามารถสร้างและวาง Dockerfile สำหรับโปรเจ็กต์ของเราได้ มาสร้าง Dockerfile ด้วย Terminus เพื่อทำงานกับ Pantheon กันดีกว่า

Terminus เป็นเครื่องมือบรรทัดคำสั่ง PHP ดังนั้นเรามาเริ่มกันที่อิมเมจ PHP กันก่อน ฉันกำลังติดตั้ง Terminus ผ่าน 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.

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

ส่วน 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

สคริปต์อยู่ในไดเร็กทอรีส่วนตัวและ ไม่อนุญาตให้เข้าถึงเว็บไปยัง Pantheon. เรามีสคริปต์สำหรับตรรกะ multidev ของเรา ตอนนี้เรามาอัปเดตส่วนกัน 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 บน Pantheon โอ้ ปาฏิหาริย์! สภาพแวดล้อมแบบ Multidev mr-2 ที่นี่แล้ว

วิธีเชื่อมต่อ GitLab และ Pantheon และเพิ่มประสิทธิภาพเวิร์กโฟลว์ Drupal และ WordPress

ข้อสรุป

ทีมของฉันสนุกสนานมากขึ้นเมื่อเราเริ่มเปิดคำขอรวมและสร้างสภาพแวดล้อมโดยอัตโนมัติ

ด้วยเครื่องมืออันทรงพลังของ GitLab และ Pantheon คุณสามารถเชื่อมต่อ GitLab กับ Pantheon ได้โดยอัตโนมัติ

เนื่องจากเราใช้ GitLab CI/CD เวิร์กโฟลว์ของเราจึงมีพื้นที่ให้เติบโต ต่อไปนี้เป็นแนวคิดสองสามข้อในการเริ่มต้น:

แจ้งให้เราทราบว่าคุณคิดอย่างไรเกี่ยวกับ GitLab, Pantheon และระบบอัตโนมัติ

ป.ล. คุณรู้หรือไม่ว่า Terminus เครื่องมือบรรทัดคำสั่งของ Pantheon สามารถขยายได้ผ่านปลั๊กอิน?

พวกเราที่ Pantheon ทำงานได้ดีกับเวอร์ชัน 2 ของเรา ปลั๊กอินสำหรับเครื่องมือสร้าง Terminus ด้วยการสนับสนุน GitLab หากคุณไม่ต้องการกังวลกับการตั้งค่าสำหรับแต่ละโปรเจ็กต์ ให้ลองใช้ปลั๊กอินนี้และช่วยเราทดสอบ v2 เบต้า สำหรับทีมเทอร์มินัส build:project:create คุณต้องการเพียงโทเค็น Pantheon และโทเค็น GitLab เธอจะปรับใช้หนึ่งในโปรเจ็กต์ตัวอย่างด้วย Composer และการทดสอบอัตโนมัติ สร้างโปรเจ็กต์ใหม่ใน GitLab ซึ่งเป็นไซต์ Pantheon ใหม่ และเชื่อมต่อโปรเจ็กต์เหล่านั้นโดยใช้ตัวแปรสภาพแวดล้อมและคีย์ SSH

เกี่ยวกับผู้แต่ง

Andrew Taylor สร้างเครื่องมือสำหรับนักพัฒนาใน โบสถ์ของเทพเจ้าทั้งหลาย.

ที่มา: will.com

เพิ่มความคิดเห็น