릴리스 배포자 워크 플로 작업은 CI / CD (Continuous Integration / Continuous Deployment)를위한 자동화 된 릴리스 배포입니다. 웹 응용 프로그램의 배포 프로세스를 자동화하도록 설계되었습니다. 이 작업은 환경 설정, 종속성 설치, 프로젝트 구축 (빌드 패키지), 원격 서버에 배포하고 슬랙에 알림을 보냅니다.
| 입력 | 설명 | 필수의 | 기본 |
|---|---|---|---|
| 사이트 url | 배포 사이트 URL | 예 | N/A |
| github-token | Github 토큰. 이것은 Github에 의해 자동으로 제공됩니다. 기본값 $ {{ecrets.github_token}}을 사용하십시오. 더 많은 정보 | 예 | N/A |
| 배포 경로 | 응용 프로그램이 배포 될 원격 서버의 경로. | 예 | N/A |
| 배포 호스트 | 원격 서버의 호스트 이름 또는 IP 주소. | 예 | N/A |
| 배포 포트 | 원격 서버의 SSH 포트 (보통 22). | 예 | N/A |
| 배포 사용자 | 원격 서버에 대한 SSH 액세스에 대한 사용자 이름. | 예 | N/A |
| 배포 키 | 원격 서버에 액세스하기위한 개인 SSH 키. SSH 키를 생성합니다 | 예 | N/A |
| 태그 이름 | 릴리스 빌드의 태그 이름. | 예 | N/A |
| 길 | Github 러너의 빌드 디렉토리로가는 경로. | 예 | 빌드/트렁크/ |
| 스위치 | 배포를위한 RSYNC 스위치. 파일 동기화 프로세스의 동작을 제어합니다. rsync 문서 | 아니요 | -avzr --exclude = "*. env"--exclude = "env"--exclude = ". github"--exclude = ". git"--exclude = ". gitignore"--exclude = ". user.ini" |
| Slack-Webhook | 알림을위한 Slack Webhook URL. 슬랙 설정에서 이것을 얻으십시오. 느슨한 웹 후크 생성 | 아니요 | N/A |
| 슬랙 채널 | 알림을위한 슬랙 채널. | 아니요 | 일반적인 |
| 슬랙 타이틀 | 슬랙 알림에 대한 제목. | 아니요 | 웹 응용 프로그램이 배포되었습니다 |
| 느슨한 메시지 | 슬랙 알림을위한 메시지 본문. | 아니요 | 배포 프로세스가 완료되었습니다. 자세한 내용은 로그를 확인하십시오. |
| Slack-Username | Slack 알림의 발신자로 표시되는 사용자 이름. | 아니요 | WebApp은 봇을 배포합니다 |
| 슬랙-발 | 슬랙 알림을위한 바닥 글 텍스트. | 아니요 | 웹 응용 프로그램 업데이트 상태 |
| PHP 대량 | PHP 버전 설정 | 아니요 | 7.4 |
| PHP-확장 | 설치할 PHP 확장 | 아니요 | PCOV |
| 노드-버전 | Node.js 버전 설정 | 아니요 | 16 |
| 사용 -PHP | PHP 설정 여부 | 아니요 | 진실 |
| 사용-노드 | node.js를 설정할지 여부 | 아니요 | 진실 |
| 사용-프레임 스틸 설치 | 원격 SSH 설치/업데이트를 실행할지 여부 | 아니요 | 거짓 |
| 업로드 릴리스 assets | 릴리스 자산을 업로드할지 여부 | 아니요 | 진실 |
| 릴리스 파일 | 릴리스 할 파일 | 아니요 | build.zip; changelog.md |
| 사용 캐시 | 종속성을 위해 캐싱 사용 여부 | 아니요 | 거짓 |
| 업로드-아티팩트 | 아티팩트를 업로드할지 여부 | 아니요 | 거짓 |
| 아티팩트 이름 | 업로드 할 유물 이름 | 아니요 | 빌드-아티팩트 |
| 유물 경로 | 업로드 할 유물의 경로 | 아니요 | 빌드/트렁크/ |
워크 플로 에서이 작업을 사용하려면 GitHub Action Workflow 파일에 다음 단계를 포함하십시오. GitHub Action을 처음 사용하는 경우 저장소의 루트에 .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 사용하여 릴리스를 관리 한 다음 릴리스가 생성되면 사용자 정의 배치자 작업을 실행합니다.
경고
switches 의 --delete 옵션은 서버에서 중요한 파일이나 컨텐츠를 삭제할 수 있으므로 위험 할 수 있습니다.
빌드 디렉토리 : path 입력 (기본 build/trunk/ )은 rsync 사용하여 파일이 원격 서버에 복사 될 디렉토리를 지정합니다. 빌드 프로세스가 필요한 파일을이 디렉토리에 출력하거나 빌드 출력 위치에 맞게 path 입력을 조정하는지 확인하십시오.
rsync --delete 옵션 : switches 입력의 --delete 옵션은 더 이상 존재하지 않는 원격 서버에서 파일을 삭제하여 원격 디렉토리를 로컬 빌드 디렉토리와 동기화하는 데 사용됩니다. 이는 사용자가 지원 이미지 또는 기타 자산과 같은 서버에서 중요한 파일 또는 콘텐츠를 삭제할 수 있으므로 위험 할 수 있습니다. 의도하지 않은 데이터 손실을 피하려면이 옵션을주의해서 사용하십시오. switches 입력에서 --exclude 목록에 추가하여 삭제해서는 안되는 디렉토리를 제외하십시오. 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 라이센스에 따라 릴리스됩니다.