
แขกรับเชิญของเรา Pantheon ผู้สร้างเครื่องมือสำหรับนักพัฒนา จะมาพูดคุยเกี่ยวกับวิธีการทำให้การปรับใช้เป็นไปโดยอัตโนมัติ WordPress โดยใช้ GitLab CI/CD
В ฉันทำงานด้านการติดต่อประสานงานกับนักพัฒนา ดังนั้นฉันจึงมองหาวิธีใหม่ๆ ในการช่วยเหลือเหล่านักพัฒนาอยู่เสมอ WordPress и Drupal แก้ไขปัญหาการทำงานอัตโนมัติในขั้นตอนการทำงาน เพื่อบรรลุเป้าหมายนี้ ฉันชอบทดลองใช้เครื่องมือใหม่ๆ และผสมผสานเครื่องมือเหล่านั้นเข้าด้วยกันเพื่อให้ได้ประสิทธิภาพที่ดียิ่งขึ้น
ฉันมักจะเห็นนักพัฒนาประสบปัญหากับเซิร์ฟเวอร์ staging เดียว
เป็นเรื่องน่ายินดีอย่างยิ่งที่ได้รอถึงคราวของคุณเพื่อใช้เซิร์ฟเวอร์ระดับกลางหรือส่ง URL ให้กับลูกค้าพร้อมข้อความว่า “ดูที่นี่ แต่อย่าเพิ่งดูที่นี่”
- หนึ่งในเครื่องมือ Pantheon ที่ยอดเยี่ยม - แก้ปัญหานี้เนื่องจากคุณสามารถสร้างสภาพแวดล้อมสำหรับสาขา Git ได้ตามต้องการ สภาพแวดล้อมแบบ multidev แต่ละแห่งมี URL และฐานข้อมูลของตัวเอง ดังนั้นนักพัฒนาจึงสามารถทำงานอย่างเงียบๆ ตรวจสอบคุณภาพ และได้รับการอนุมัติโดยไม่ต้องเหยียบเท้าของกันและกัน
แต่ Pantheon ไม่มีเครื่องมือสำหรับการควบคุมเวอร์ชันหรือการบูรณาการและการปรับใช้อย่างต่อเนื่อง (CI/CD) แต่เป็นแพลตฟอร์มที่ยืดหยุ่นซึ่งคุณสามารถรวมเครื่องมือต่างๆ ได้
ฉันยังสังเกตเห็นว่าทีมต่างๆ ใช้เครื่องมือบางอย่างเพื่อการพัฒนา และเครื่องมือที่แตกต่างกันสำหรับการประกอบและการปรับใช้
ตัวอย่างเช่น มีเครื่องมือที่แตกต่างกันสำหรับการควบคุมเวอร์ชันและ CI/CD คุณต้องเล่นซอและสลับระหว่างเครื่องมือต่างๆ เพื่อแก้ไขโค้ดและวินิจฉัยปัญหา
На มีเครื่องมือการพัฒนาครบชุด: สำหรับการควบคุมเวอร์ชัน ตั๋ว คำขอรวม ไปป์ไลน์ CI/CD ที่ดีที่สุดในระดับเดียวกัน รีจีสทรีคอนเทนเนอร์ และทุกอย่างที่คล้ายกัน ฉันยังไม่เจอแอปพลิเคชันที่ให้อะไรมากมายในการจัดการขั้นตอนการพัฒนาของคุณ
ฉันชอบระบบอัตโนมัติ ดังนั้นฉันจึงได้เรียนรู้วิธีการเชื่อมต่อ Pantheon กับ GitLab เพื่อให้คอมมิตกับสาขาหลักบน GitLab ถูกนำไปใช้กับสภาพแวดล้อมการพัฒนาหลักใน Pantheon และคำขอรวมบน GitLab สามารถสร้างและปรับใช้โค้ดกับสภาพแวดล้อม multidev ใน Pantheon
ในคู่มือนี้ ผมจะแสดงวิธีการตั้งค่าการเชื่อมต่อระหว่าง GitLab และ Pantheon รวมถึงวิธีการเพิ่มประสิทธิภาพเวิร์กโฟลว์ของคุณ WordPress и Drupal.
แน่นอนว่าเป็นไปได้ แต่เราจะทำทุกอย่างด้วยมือของเราเพื่อเจาะลึก และในอนาคตให้ใช้เครื่องมือนี้ไม่เพียงแต่สำหรับการปรับใช้เท่านั้น
การแนะนำ
สำหรับโพสต์นี้ คุณต้องเข้าใจว่า Pantheon แบ่งแต่ละไซต์ออกเป็นสามองค์ประกอบ: รหัส ฐานข้อมูล และไฟล์
โค้ดนี้ประกอบด้วยไฟล์ CMS เช่น ไฟล์หลัก ปลั๊กอิน และธีม WordPressไฟล์เหล่านี้ได้รับการจัดการใน ซึ่งโฮสต์โดย Pantheon ซึ่งหมายความว่าเราสามารถปรับใช้โค้ดจาก GitLab ไปยัง Pantheon ด้วย Git
ไฟล์ใน Pantheon คือไฟล์สื่อ กล่าวคือ รูปภาพสำหรับไซต์ โดยปกติแล้วผู้ใช้จะอัปโหลดและ Git จะเพิกเฉยต่อพวกเขา
, ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ หรือ ที่ pantheon.io
สมมติฐาน
โครงการของฉันใน Pantheon และ GitLab มีชื่อว่า pantheon-gitlab-blog-demoชื่อโครงการต้องไม่ซ้ำกัน เราจะใช้เว็บไซต์ในการทำงานนี้ WordPressคุณก็เอาไปได้เช่นกัน Drupalแต่บางสิ่งบางอย่างจะต้องมีการเปลี่ยนแปลง
ฉันจะใช้ และคุณสามารถทำงานได้ , ถ้าคุณต้องการ.
สร้างโครงการ
ก่อนอื่นมาสร้างกันก่อน (เราจะกลับมาที่นี้ในภายหลัง)
ขณะนี้ จากนั้นเราก็ติดตั้งมัน WordPress สำหรับหน้าแดชบอร์ดของเว็บไซต์
หากมือของคุณอยากเปลี่ยนแปลงบางสิ่ง เช่น ลบหรือเพิ่มปลั๊กอิน ให้อดทน ไซต์ยังไม่ได้เชื่อมต่อกับ GitLab และเราต้องการให้การเปลี่ยนแปลงโค้ดทั้งหมดผ่าน GitLab
เราจะติดตั้งเมื่อไหร่? WordPressกลับไปที่หน้าแดชบอร์ดของเว็บไซต์ Pantheon แล้วเปลี่ยนโหมดการพัฒนาเป็น Git
ความมุ่งมั่นเริ่มต้นบน GitLab
ตอนนี้คุณต้องถ่ายโอนรหัสเริ่มต้น WordPress จากเว็บไซต์ Pantheon ไปยัง GitLab วิธีการคือ เราจะโคลนโค้ดจาก Git repository ของเว็บไซต์ Pantheon มายังเครื่องของเราก่อน แล้วจึงพุชไปยัง repository ของ GitLab
เพื่อให้ง่ายและปลอดภัยยิ่งขึ้น และเราจะไม่ต้องป้อนรหัสผ่านทุกครั้งที่เราโคลนพื้นที่เก็บข้อมูล Pantheon Git ในเวลาเดียวกันแล้ว .
ในการดำเนินการนี้ ให้โคลนเว็บไซต์ Pantheon ในเครื่องโดยคัดลอกคำสั่งจากช่อง Clone with Git บนแดชบอร์ดของเว็บไซต์
หากคุณต้องการความช่วยเหลือ โปรดอ่านเอกสารประกอบ .
ตอนนี้เรามาเปลี่ยนกัน git remote originเพื่อชี้ไปที่ GitLab แทน Pantheon ก็สามารถทำได้ .
ไปที่โปรเจ็กต์ GitLab และคัดลอก URL ของที่เก็บจากดรอปดาวน์ Clone ในหน้ารายละเอียดโปรเจ็กต์ มาเลือกตัวเลือก Clone with SSH กัน เนื่องจากเราได้กำหนดค่าคีย์ SSH แล้ว
Поумолчанию 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 ใหม่ภายในเครื่องด้วย ssh-keygen และเพิ่มคีย์ส่วนตัวเป็นตัวแปรให้กับโปรเจ็กต์.
แล้วเราจะถาม SSH_PRIVATE_KEY ในขณะที่ ในการตั้งค่าโปรเจ็กต์
ในขั้นตอนที่สามและสี่ เราจะสร้างไฟล์ .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 ส่วนตัวอยู่ใน GitLab, SSH แบบเปิดอยู่ใน Pantheon
มาตั้งค่าตัวแปรสภาพแวดล้อมอีกสองสามตัวกัน อันแรกเรียกว่า PANTHEON_SITE ค่าของมันคือชื่อของไซต์ Pantheon บนเครื่องของคุณ
ชื่อบนเครื่องจะแสดงอยู่ที่ส่วนท้ายของคำสั่ง Clone with Git คุณได้โคลนไซต์ในเครื่องแล้ว ดังนั้นนี่จะเป็นชื่อของไดเร็กทอรีที่เก็บในเครื่อง
ต่อไป มาตั้งค่าตัวแปรสภาพแวดล้อมกัน 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 ที่วิหารแพนธีออน มาดูกันดีกว่า
กำลังส่งเธรดคำขอรวมไปยัง Pantheon
ที่นี่เราจะใช้คุณสมบัติ Pantheon ที่ฉันชื่นชอบ - ซึ่งคุณสามารถสร้างสภาพแวดล้อม Pantheon เพิ่มเติมสำหรับสาขา Git ได้ตามความต้องการ
จึงสามารถข้ามส่วนนี้ได้ แต่ถ้าคุณมีสิทธิ์เข้าถึง คุณสามารถเพิ่มผลผลิตได้อย่างจริงจังโดยการตั้งค่าการสร้างสภาพแวดล้อม 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โดยกด สร้างคำขอรวม.
เมื่อสร้างคำขอรวมแล้ว เราจะดูว่างาน CI/CD ดำเนินการอย่างไร deploy:multidev.
ดูสิ มีการส่งกระทู้ใหม่ไปที่ Pantheon แล้ว แต่ถ้าเราไปที่ส่วน multidev บนแดชบอร์ดของไซต์ Pantheon เราจะไม่เห็นสภาพแวดล้อมใหม่ที่นั่น
มาดูในส่วนของ Git Branches กันดีกว่า
ส่งผลให้กระทู้ของเรา mr-1 ไปถึงแพนธีออนแล้ว มาสร้างสภาพแวดล้อมจากสาขากันเถอะ mr-1.
เราได้สร้างสภาพแวดล้อมแบบ multidev แล้ว ตอนนี้กลับไปที่ GitLab และดูที่ส่วนนี้กัน การดำเนินงาน > สภาพแวดล้อม. เราจะเห็นรายการสำหรับ dev и mr-1.
นี่เป็นเพราะเราได้เพิ่มรายการ environment ด้วยชื่อ name и url ในงาน CI/CD หากเราคลิกที่ไอคอนสภาพแวดล้อมแบบเปิด เราจะไปที่ URL ของสภาพแวดล้อมแบบ multidev บน Pantheon
สร้าง multidev โดยอัตโนมัติ
โดยหลักการแล้ว คุณสามารถหยุดที่นี่และอย่าลืมสร้างสภาพแวดล้อมแบบ multidev สำหรับคำขอรวมแต่ละรายการ แต่กระบวนการนี้สามารถดำเนินการได้โดยอัตโนมัติ
Pantheon มีเครื่องมือบรรทัดคำสั่ง ซึ่งคุณสามารถทำงานกับแพลตฟอร์มได้โดยอัตโนมัติ Terminus ช่วยให้คุณสร้างสภาพแวดล้อม multidev จากบรรทัดคำสั่ง - เหมาะสำหรับ .
เราจำเป็นต้องมีคำขอรวมใหม่เพื่อทดสอบสิ่งนี้ มาสร้างสาขาใหม่โดยใช้ git checkout -b auto-multidev-creation.
หากต้องการใช้ Terminus ในงาน GitLab CI/CD คุณต้องมีโทเค็นเครื่องสำหรับการตรวจสอบสิทธิ์ด้วย Terminus และคอนเทนเนอร์อิมเมจด้วย Terminus
ให้บันทึกไว้ในที่ปลอดภัยและเพิ่มเป็นตัวแปรสภาพแวดล้อมส่วนกลางใน GitLab ด้วยชื่อ PANTHEON_MACHINE_TOKEN.
หากคุณลืมวิธีเพิ่มตัวแปรสภาพแวดล้อม GitLab ให้กลับไปที่ที่เรากำหนดไว้
PANTHEON_SITE.
การสร้าง Dockerfile ด้วย Terminus
หากคุณไม่ได้ใช้ Docker หรือไม่ชอบไฟล์ Dockerfile, ถ่ายรูปของฉัน registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest และข้ามส่วนนี้ไป
ซึ่งเราสามารถสร้างและวาง 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.
ส่วน 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สคริปต์อยู่ในไดเร็กทอรีส่วนตัวและ . เรามีสคริปต์สำหรับตรรกะ 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 คุณสามารถเชื่อมต่อ GitLab กับ Pantheon ได้โดยอัตโนมัติ
เนื่องจากเราใช้ GitLab CI/CD เวิร์กโฟลว์ของเราจึงมีพื้นที่ให้เติบโต ต่อไปนี้เป็นแนวคิดสองสามข้อในการเริ่มต้น:
- เพิ่มขั้นตอนการสร้าง
- เพิ่มการทดสอบอัตโนมัติ
- เพิ่มงานเพื่อให้แน่ใจว่าเป็นไปตามมาตรฐานโค้ด
- เพิ่ม .
แจ้งให้เราทราบว่าคุณคิดอย่างไรเกี่ยวกับ GitLab, Pantheon และระบบอัตโนมัติ
ป.ล. คุณรู้หรือไม่ว่า Terminus เครื่องมือบรรทัดคำสั่งของ Pantheon ?
พวกเราที่ Pantheon ทำงานได้ดีกับเวอร์ชัน 2 ของเรา ด้วยการสนับสนุน GitLab หากคุณไม่ต้องการกังวลกับการตั้งค่าสำหรับแต่ละโปรเจ็กต์ ให้ลองใช้ปลั๊กอินนี้และช่วยเราทดสอบ v2 เบต้า สำหรับทีมเทอร์มินัส build:project:create คุณต้องการเพียงโทเค็น Pantheon และโทเค็น GitLab เธอจะปรับใช้หนึ่งในโปรเจ็กต์ตัวอย่างด้วย Composer และการทดสอบอัตโนมัติ สร้างโปรเจ็กต์ใหม่ใน GitLab ซึ่งเป็นไซต์ Pantheon ใหม่ และเชื่อมต่อโปรเจ็กต์เหล่านั้นโดยใช้ตัวแปรสภาพแวดล้อมและคีย์ SSH
เกี่ยวกับผู้แต่ง
Andrew Taylor สร้างเครื่องมือสำหรับนักพัฒนาใน .
ที่มา: will.com
