การดำเนินการตามเวิร์กโฟลว์การวางจำหน่ายรีลีสเป็นการปรับใช้รีลีสอัตโนมัติสำหรับการรวม / การปรับใช้อย่างต่อเนื่อง (CI / CD) มันถูกออกแบบมาเพื่อทำให้กระบวนการปรับใช้ของเว็บแอปพลิเคชันของคุณเป็นไปโดยอัตโนมัติ การดำเนินการนี้จัดการการตั้งค่าสภาพแวดล้อมการติดตั้งการพึ่งพาการสร้างโครงการ (แพ็คเกจบิลด์) ปรับใช้กับเซิร์ฟเวอร์ระยะไกลและส่งการแจ้งเตือนไปยัง Slack
| ป้อนข้อมูล | คำอธิบาย | ที่จำเป็น | ค่าเริ่มต้น |
|---|---|---|---|
| ไซต์อูล | URL เว็บไซต์ปรับใช้ | ใช่ | N/A |
| GitHub-token | โทเค็น GitHub นี่คือ GitHub โดยอัตโนมัติ ใช้ค่าเริ่มต้น $ {{secrets.github_token}} ข้อมูลเพิ่มเติม | ใช่ | N/A |
| การปรับใช้ | พา ธ บนเซิร์ฟเวอร์ระยะไกลซึ่งแอปพลิเคชันจะถูกปรับใช้ | ใช่ | N/A |
| ปรับใช้โฮสต์ | ชื่อโฮสต์หรือที่อยู่ IP ของเซิร์ฟเวอร์ระยะไกล | ใช่ | N/A |
| ปรับใช้พอร์ต | พอร์ต SSH ของเซิร์ฟเวอร์ระยะไกล (ปกติ 22) | ใช่ | N/A |
| ปรับใช้ผู้ใช้ | ชื่อผู้ใช้สำหรับการเข้าถึง SSH ไปยังเซิร์ฟเวอร์ระยะไกล | ใช่ | N/A |
| ปรับใช้คีย์ | คีย์ SSH ส่วนตัวสำหรับการเข้าถึงเซิร์ฟเวอร์ระยะไกล สร้างคีย์ SSH | ใช่ | N/A |
| แท็กชื่อ | ชื่อแท็กจากการสร้างรุ่น | ใช่ | N/A |
| เส้นทาง | เส้นทางไปยังไดเรกทอรี Build บนนักวิ่ง GitHub | ใช่ | Build/Trunk/ |
| สวิตช์ | สวิตช์ RSYNC สำหรับการปรับใช้ สิ่งนี้ควบคุมพฤติกรรมของกระบวนการซิงโครไนซ์ไฟล์ เอกสาร RSYNC | เลขที่ | -avzr -exclude = "*. env" -exclude = "env" -exclude = ". github" -exclude = ". git" -exclude = ". gitignore" -exclude = ". user.ini" |
| ลื่นไหล | Slack Webhook URL สำหรับการแจ้งเตือน รับสิ่งนี้จากการตั้งค่า Slack ของคุณ การสร้าง slack webhooks | เลขที่ | N/A |
| ช่องคลอด | ช่อง Slack สำหรับการแจ้งเตือน | เลขที่ | ทั่วไป |
| ชื่อที่หย่อน | ชื่อเรื่องสำหรับการแจ้งเตือนหย่อน | เลขที่ | เว็บแอปพลิเคชันปรับใช้ |
| ข้อความหย่อน | ข้อความข้อความสำหรับการแจ้งเตือนหย่อน | เลขที่ | กระบวนการปรับใช้เสร็จสมบูรณ์ ตรวจสอบบันทึกสำหรับรายละเอียด |
| ชื่อ USERNAME | ชื่อผู้ใช้ที่จะปรากฏเป็นผู้ส่งการแจ้งเตือนหย่อน | เลขที่ | WebApp ปรับใช้บอท |
| คนที่หย่อน | ข้อความส่วนท้ายสำหรับการแจ้งเตือนหย่อน | เลขที่ | สถานะการอัปเดตเว็บแอปพลิเคชัน |
| รุ่น PHP | เวอร์ชัน PHP เพื่อตั้งค่า | เลขที่ | 7.4 |
| php-extensions | ส่วนขยาย PHP เพื่อติดตั้ง | เลขที่ | PCOV |
| โหนด | node.js เวอร์ชันเพื่อตั้งค่า | เลขที่ | 16 |
| USE-PHP | ไม่ว่าจะติดตั้ง PHP | เลขที่ | จริง |
| ใช้โหนด | ไม่ว่าจะตั้งค่า node.js | เลขที่ | จริง |
| ใช้การติดตั้งภายใน | ไม่ว่าจะดำเนินการติดตั้ง/อัปเดตระยะไกลในระยะไกล | เลขที่ | เท็จ |
| อัพโหลด-ปล่อยทิ้งไว้ | ไม่ว่าจะอัพโหลดสินทรัพย์รีลีส | เลขที่ | จริง |
| ไฟล์ปล่อย | ไฟล์เพื่ออัปโหลดเพื่อวางจำหน่าย | เลขที่ | build.zip; changelog.md |
| การใช้แคช | ไม่ว่าจะใช้แคชสำหรับการพึ่งพา | เลขที่ | เท็จ |
| อัพโหลด | ไม่ว่าจะอัปโหลดสิ่งประดิษฐ์ | เลขที่ | เท็จ |
| สิ่งประดิษฐ์ชื่อ | ชื่อของสิ่งประดิษฐ์ที่จะอัปโหลด | เลขที่ | การสร้าง |
| สิ่งประดิษฐ์ | เส้นทางของสิ่งประดิษฐ์ที่จะอัปโหลด | เลขที่ | Build/Trunk/ |
หากต้องการใช้การกระทำนี้ในเวิร์กโฟลว์ของคุณให้รวมขั้นตอนต่อไปนี้ในไฟล์เวิร์กโฟลว์การกระทำของคุณ หากคุณยังใหม่กับการกระทำของ GitHub ให้สร้างไดเรกทอรี .github/workflows ในรูทของที่เก็บของของคุณและเพิ่มไฟล์ YAML (เช่น release-deployer.yml ) ด้วยเนื้อหาต่อไปนี้:
ตัวอย่างพื้นฐาน:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notificationsตัวอย่างที่มีความคิดเห็นสำหรับแต่ละพารามิเตอร์:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
# Required parameters
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
# Optional parameters with defaults
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
switches : ' -avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini" ' # Rsync switches for deployment (default: '-avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini"')
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications
slack-channel : general # Slack channel for notifications (default: general)
slack-title : " Web Application Deployed " # Title for the Slack notification (default: "Web Application Deployed")
slack-message : " Deployment process completed. " # Message body for the Slack notification (default: "Deployment process completed. Check logs for details.")
slack-username : " WebApp Deploy Bot " # Username that will appear as the sender of the Slack notification (default: "WebApp Deploy Bot")
slack-footer : " Web Application Update Status " # Footer text for the Slack notification (default: "Web Application Update Status")
# Optional setup parameters with defaults
php-version : ' 7.4 ' # PHP version to setup (default: '7.4')
php-extensions : ' pcov ' # PHP extensions to install (default: 'pcov')
node-version : ' 16 ' # Node.js version to setup (default: '16')
# Boolean flags
use-php : true # Whether to setup PHP (default: true)
use-node : true # Whether to setup Node.js (default: true)
use-remote-install : true # Whether to execute remote SSH updates (default: false)
upload-release-assets : true # Whether to upload release assets (default: true)
# Files to upload to release
release-files : ' build.zip;CHANGELOG.md ' # Files to upload to release (default: 'build.zip;CHANGELOG.md')
ในตัวอย่างนี้เวิร์กโฟลว์ทริกเกอร์ในคำขอดึงแบบปิดและยังสามารถเรียกใช้ด้วยตนเองผ่านแท็บการกระทำของ GitHub มันใช้ googleapis/release-please-action เพื่อจัดการการเผยแพร่แล้วเรียกใช้การดำเนินการ deployer ที่กำหนดเองหากมีการสร้างรีลีส
คำเตือน
ตัวเลือก --delete ใน switches อาจเป็นอันตรายเนื่องจากอาจส่งผลให้การลบไฟล์หรือเนื้อหาสำคัญบนเซิร์ฟเวอร์
Build Directory : อินพุต path ( build/trunk/ ) ระบุไดเรกทอรีที่ไฟล์จะถูกคัดลอกไปยังเซิร์ฟเวอร์ระยะไกลโดยใช้ rsync ตรวจสอบให้แน่ใจว่ากระบวนการบิลด์ของคุณส่งออกไฟล์ที่จำเป็นไปยังไดเรกทอรีนี้หรือปรับอินพุต path ตามลำดับเพื่อให้ตรงกับตำแหน่งการสร้างบิลด์ของคุณ
ตัวเลือก RSYNC --delete : ตัวเลือก --delete ในอินพุต switches ใช้เพื่อให้ไดเรกทอรีระยะไกลซิงค์กับไดเรกทอรีบิลด์ท้องถิ่นโดยการลบไฟล์บนเซิร์ฟเวอร์ระยะไกลที่ไม่มีอยู่ในเครื่องอีกต่อไป สิ่งนี้อาจเป็นอันตรายได้เนื่องจากอาจส่งผลให้การลบไฟล์หรือเนื้อหาสำคัญบนเซิร์ฟเวอร์เช่นรูปภาพที่ผู้ใช้อัปโหลดหรือสินทรัพย์อื่น ๆ ใช้ตัวเลือกนี้ด้วยความระมัดระวังเพื่อหลีกเลี่ยงการสูญเสียข้อมูลที่ไม่ได้ตั้งใจ พิจารณาไม่รวมไดเร็กทอรีที่ไม่ควรลบโดยเพิ่มลงในรายการ --exclude ในอินพุต switches ดู: ตัวเลือกการลบ rsync
rsync ด้วยสวิตช์ที่ระบุset -eo ) ซึ่งทำให้มั่นใจได้ว่าขั้นตอนต่อไปจะไม่ถูกดำเนินการหากขั้นตอนก่อนหน้านี้ล้มเหลว| ความลับ | คำอธิบาย |
|---|---|
GITHUB_TOKEN | โทเค็น GitHub สำหรับการตรวจสอบ (จัดทำโดยค่าเริ่มต้นในการกระทำของ GitHub) |
DEPLOY_PATH | เส้นทางการปรับใช้ระยะไกล |
DEPLOY_HOST | โฮสต์การปรับใช้ระยะไกล |
DEPLOY_PORT | พอร์ตการปรับใช้ระยะไกล |
DEPLOY_USER | ผู้ใช้งานระยะไกล |
DEPLOY_KEY | คีย์การปรับใช้ระยะไกล |
SLACK_WEBHOOK | Slack Webhook URL สำหรับการแจ้งเตือน |
เพื่อเพิ่มความลับในที่เก็บของคุณ:
CI/CD เป็นวิธีการส่งมอบแอพให้กับลูกค้าบ่อยครั้งโดยการแนะนำระบบอัตโนมัติในขั้นตอนของการพัฒนาแอพ แนวคิดหลักที่เกิดจาก CI/CD คือการรวมกันอย่างต่อเนื่องการส่งมอบอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่อง การดำเนินการนี้ช่วยให้ใช้ CI/CD โดยอัตโนมัติกระบวนการปรับใช้เพื่อให้มั่นใจว่าแอปพลิเคชันของคุณคือ
อยู่ในสถานะที่ปรับใช้งานได้เสมอและการอัปเดตนั้นจะถูกส่งไปยังผู้ใช้อย่างรวดเร็วและมีประสิทธิภาพ
ด้วยการรวมการกระทำนี้เข้ากับเวิร์กโฟลว์ของคุณคุณสามารถบรรลุกระบวนการปรับใช้ที่เชื่อถือได้และปลอดภัยยิ่งขึ้นปรับปรุงเวิร์กโฟลว์การพัฒนาของคุณและตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณถูกปรับใช้อย่างสม่ำเสมอและรวดเร็ว
สำคัญ
GitHub ให้นาทีฟรีจำนวนหนึ่งในแต่ละเดือนขึ้นอยู่กับแผนของคุณซึ่งเพียงพอสำหรับโครงการขนาดเล็กถึงขนาดกลาง การใช้งานของ GitHub ขึ้นอยู่กับเวลาคำนวณที่จำเป็นในการเรียกใช้เวิร์กโฟลว์ของคุณซึ่งอาจแตกต่างกันไปขึ้นอยู่กับนักวิ่งที่ใช้และนาทีทั้งหมดที่ใช้ เพื่อจัดการการใช้งานอย่างมีประสิทธิภาพให้เพิ่มประสิทธิภาพเวิร์กโฟลว์ของคุณและพิจารณาใช้นักวิ่งโฮสต์ตัวเองสำหรับโครงการขนาดใหญ่ เครื่องคิดเลขราคา
สคริปต์และเอกสารในโครงการนี้ได้รับการเผยแพร่ภายใต้ใบอนุญาต MIT