
GitHub 작업을 통해 프로젝트를 GitHub 페이지에 자동 배포하십시오. 이 조치는 생산 준비 코드를 GH 페이지 및 문서를 포함하여 원하는 지점으로 푸시하도록 구성 할 수 있습니다. 또한 크로스 리포지토리 배포를 처리 할 수 있으며 Github Enterprise 와도 작동합니다.

이 프로젝트의 유지 보수는 모든 기고자와 스폰서가 가능합니다. 이 프로젝트를 후원하고 아바타 또는 회사 로고가 아래에 표시 되려면 여기를 클릭하십시오. ?




















GitHub Actions가 지원하는 모든 이벤트를 트리거하기 위해 워크 플로에 작업을 포함시킬 수 있습니다. 배포하려는 원격 브랜치가 아직 존재하지 않으면 조치가이를 생성합니다. 배포가 작동하려면이 워크 플로가 실행되기 전에 actions/checkout 단계를 포함해야합니다. 빠른 연속으로 여러 배포를하려는 경우 워크 플로에서 동시성 매개 변수를 활용하여 중첩을 방지해야 할 수도 있습니다.
아래의 예를 볼 수 있습니다.
name : Build and Deploy
on : [push]
permissions :
contents : write
jobs :
build-and-deploy :
concurrency : ci-${{ github.ref }} # Recommended if you intend to make multiple deployments in quick succession.
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : build # The folder the action should deploy. 메모
푸시하려는 지점에서 배포하도록 저장소를 구성해야합니다. 이렇게하려면 저장소 설정으로 이동하여 Pages 를 클릭 한 다음 Source 드롭 다운에서 Deploy from a Branch 선택하십시오. 거기에서 행동에 제공 한 지점을 선택하십시오. 대부분의 경우 기본값이므로 gh-pages 됩니다.
워크 플로우가 특정 분기에 푸시 이벤트를 트리거하도록 만들려면 on 섹션을 수정할 수 있습니다.
on :
push :
branches :
- main 경고
액세스 토큰 또는 SSH 키를 조치에 제공하지 않으면 저장소 설정에 액세스하고 제공된 GITHUB_TOKEN 에 대한 Read and Write Permissions 제공해야합니다. 그렇지 않으면 잠재적으로 권한 문제가 발생할 수 있습니다. 또는 워크 플로 파일에서 다음을 설정하여 필요한 권한을 조치에 부여 할 수 있습니다.
permissions :
contents : write 작업이 작동하기 전에 워크 플로의 with 를 구성 해야합니다 . 위의 예에있는 with 에 추가 할 수 있습니다. 모든 secrets Bracket Syntax를 사용하여 참조하고 Github Repository의 Settings/Secrets 메뉴에 저장해야합니다. GitHub 작업으로 환경 변수 설정에 대해 자세히 알아볼 수 있습니다.
배포하려면 다음 옵션을 구성해야합니다.
| 열쇠 | 가치 정보 | 유형 | 필수의 |
|---|---|---|---|
folder | 배포하려는 저장소의 폴더. 빌드 스크립트가 build 라는 디렉토리로 컴파일하면 여기에 넣을 것입니다. 루트 디렉토리를 배포하려면 a를 배치 할 수 있습니다 . 여기. 폴더 경로로 ~ 선물하여 절대 파일 경로를 활용할 수도 있습니다. .gitignore 항목이 일치하는 모든 파일/폴더는 배포되지 않습니다. 일부 도구는 빌드 출력을위한 .gitignore 파일을 자동 생성합니다. | with | 예 |
기본적으로 동작에는 토큰 구성이 필요하지 않으며 제공된 저장소 스코핑 Github 토큰을 사용하여 배포를합니다. 더 많은 사용자 정의가 필요한 경우 다음 옵션을 사용하여 배포 유형을 수정할 수 있습니다.
| 열쇠 | 가치 정보 | 유형 | 필수의 |
|---|---|---|---|
token | 이 옵션은 저장소 스코어링 된 Github 토큰의 기본값을 기본으로합니다. 그러나 다른 저장소에 배포하는 것과 같은 것들에 대해 더 많은 권한이 필요한 경우 여기에 PAT (Personal Access Token)를 추가 할 수 있습니다. 이것은 secrets / with 에 비밀로 저장되어야합니다. 필요한 권한이 가장 적은 서비스 계정을 사용하는 것이 좋습니다. 필요한 최소한의 권한 범위를 선택할 때 새 PAT를 생성 할 때 권장합니다. 암호화 된 비밀을 만들고 사용하는 것에 대해 자세히 알아보십시오. | with | 아니요 |
ssh-key | 이 옵션을 비밀로 저장된 개인 SSH 키로 설정하여 SSH를 사용하여 배포 할 작업을 구성 할 수 있습니다. 기존 SSH 클라이언트 구성을 사용하도록 true 로 설정할 수도 있습니다. 공개/개인 SSH 키 쌍을 추가하는 방법에 대한 자세한 정보는이 readme의 배포 키 섹션 사용을 참조하십시오. | with | 아니요 |
| 열쇠 | 가치 정보 | 유형 | 필수의 |
|---|---|---|---|
branch | 예를 들어 gh-pages 또는 docs 에 배치하려는 지점입니다. 기본값으로 gh-pages . | with | 아니요 |
git-config-name | 배포 커밋을 푸시 할 때 사용되는 GIT 구성에 첨부 된 이름을 사용자 정의 할 수 있습니다. 여기에 포함되지 않으면 Github 컨텍스트에서 이름을 사용하고 동작의 이름을 사용합니다. | with | 아니요 |
git-config-email | 배포 커밋을 푸시 할 때 사용되는 GIT 구성에 첨부 된 이메일을 사용자 정의 할 수 있습니다. 여기에 포함되지 않으면 Github 컨텍스트에서 이메일을 사용하고 일반적인 Github 이메일이 이어집니다. 이 필드를 완전히 생략하고 이메일없이 커밋을 밀고 싶다면 값에 대해 <> 포함시킬 수 있습니다. | with | 아니요 |
repository-name | 푸시 할 권한이있는 한 다른 저장소 경로를 지정할 수 있습니다. 이것은 JamesIves/github-pages-deploy-action 같이 형식화되어야합니다. 이 구성 옵션을 제대로 작동하려면 token 입력에서 PAT를 사용해야합니다. | with | 아니요 |
target-folder | 배포 폴더의 내용을 배포 분기의 특정 디렉토리로 푸시하려면 여기에서 지정할 수 있습니다. | with | 아니요 |
commit-message | 통합을 위해 커밋 메시지를 사용자 정의 해야하는 경우 그렇게 할 수 있습니다. | with | 아니요 |
clean | 이 옵션을 사용하여 배포 소스에 더 이상 존재하지 않는 배포 대상에서 파일을 삭제할 수 있습니다. 하나의 사용 사례는 프로젝트가 빌드마다 다른 해시 파일을 생성하는 경우입니다. clean 사용하면 .git , .github 또는 .ssh 디렉토리에 영향을 미치지 않습니다. 이 옵션은 기본적으로 켜져 있으며 false 로 설정하여 전환 할 수 있습니다. | with | 아니요 |
clean-exclude | clean 사용해야하지만 특정 파일이나 폴더를 보존하려면이 옵션을 사용할 수 있습니다. 여기에는 각 패턴을 멀티 라인 문자열의 단일 라인으로 포함해야합니다. | with | 아니요 |
dry-run | 실제로 뒤로 밀지 말고 대신 git push 호출에 --dry-run 사용하십시오. | with | 아니요 |
single-commit | 이 옵션은 전체 기록을 유지하는 대신 배포 지점에 단일 커밋을 원한다면 true 로 전환 할 수 있습니다. 이 옵션을 사용하면 기존 이력이 배포 지점에서 삭제됩니다 . | with | 아니요 |
force | 이전 버전을 덮어 쓰기 위해 새로운 새 배포를 강제로 푸시합니다. 그렇지 않으면 새 배포를 기존 배치에 다시 제출하려고 시도하십시오. 이 옵션은 기본적으로 켜져 있으며 false 로 설정하여 전환 할 수 있습니다. 단일 브랜치에 여러 배포가있는 경우 유용 할 수 있습니다. | with | 아니요 |
attempt-limit | 일을 중단하기 전에 얼마나 많은 Rebase를 만들려고 시도하는지. 이 옵션은 기본값이 3 으로 기본값을 제공하며 단일 지점에 여러 개의 배포가있을 때 증가하는 데 유용 할 수 있습니다. | with | 아니요 |
silent | 조치 출력을 침묵시켜 GIT 메시지를 표시하지 못하게합니다. | with | 아니요 |
tag | 커밋에 태그를 추가하십시오. dry-run 사용되지 않은 경우에만 작동합니다. | with | 아니요 |
동작을 올바르게 구성하면 구성된 조건에서 워크 플로가 배포를 트리거해야합니다.
이 조치는 배포가 성공했는지 여부를 결정하기 위해 워크 플로에서 사용할 수있는 deployment_status 라는 환경 변수를 내 보냅니다. 아래 각 상태 유형에 대한 설명을 찾을 수 있습니다.
| 상태 | 설명 |
|---|---|
success | success 상태는 조치가 성공적으로 지점에 배치 될 수 있음을 나타냅니다. |
failed | failed 상태는 조치가 배포하려고하는 동안 오류가 발생했음을 나타냅니다. |
skipped | skipped 상태는 배포 할 새로운 것이 없기 때문에 조치가 일찍 종료되었음을 나타냅니다. |
이 값은 또한 deployment-status 로서 단계 출력으로 설정됩니다.
토큰이 아닌 SSH 배포 키를 사용하려면 다음 터미널 명령을 실행하여 GitHub 계정에 연결된 이메일로 이메일을 대체하여 새로운 SSH 키를 생성해야합니다.
ssh-keygen -t rsa -m pem -b 4096 -C " [email protected] " -N " " 키 쌍을 생성 한 후에는 저장소 배포 키 메뉴 내에 공개 키의 내용을 추가해야합니다. Settings > Deploy Keys 이동 하여이 옵션을 찾을 수 있습니다. 원하는대로 공개 키를 지정할 수 있지만 쓰기 액세스를 제공해야 합니다 . 그 후 개인 키의 내용을 Settings > Secrets 메뉴에 DEPLOY_KEY 에 추가하십시오.
이 구성을 사용하면 동작의 ssh-key 부분을 비밀로 저장된 개인 키로 설정할 수 있습니다.
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : site
ssh-key : ${{ secrets.DEPLOY_KEY }} name : Build and Deploy
on :
push :
branches :
- main
jobs :
deploy :
concurrency : ci-${{ github.ref }}
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : build
clean : true
clean-exclude : |
special-file.txt
some/*.txt
ssh-key : ${{ secrets.DEPLOY_KEY }} 또는 이전 단계에서 이미 SSH 클라이언트를 구성한 경우 기존 SSH 클라이언트를 사용하여 배포 할 수 있도록 ssh-key 옵션을 true 로 설정할 수 있습니다. 클라이언트 구성을 조정하는 대신 GitHub의 SSH 엔드 포인트 사용으로 전환됩니다.
이 조치는 주로 우분투를 사용하여 개발됩니다. 워크 플로 작업 구성에서 runs-on 속성을 ubuntu-latest 로 설정하는 것이 좋습니다.
jobs :
build-and-deploy :
runs-on : ubuntu-latest Windows와 같은 운영 체제를 사용하는 경우 아티팩트를 사용하여 해결할 수 있습니다. 워크 플로 구성에서 actions/upload-artifact 및 actions/download-artifact 액션을 활용하여 Windows 작업에 구축 된 프로젝트를 배포를 처리 할 보조 작업으로 옮길 수 있습니다.
name : Build and Deploy
on : [push]
permissions :
contents : write
jobs :
build :
runs-on : windows-latest # The first job utilizes windows-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Upload Artifacts ? # The project is then uploaded as an artifact named 'site'.
uses : actions/upload-artifact@v1
with :
name : site
path : build
deploy :
concurrency : ci-${{ github.ref }}
needs : [build] # The second job must depend on the first one to complete before running and uses ubuntu-latest instead of windows.
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Download Artifacts ? # The built project is downloaded into the 'site' folder.
uses : actions/download-artifact@v1
with :
name : site
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : ' site ' # The deployment folder should match the name of the artifact. Even though our project builds into the 'build' folder the artifact name of 'site' must be placed here. 워크 플로에서 컨테이너를 사용하는 경우이 작업에 따라 rsync 설치하기 위해 추가 단계를 실행해야 할 수도 있습니다. 아래의 예를 볼 수 있습니다.
- name : Install rsync
run : |
apt-get update && apt-get install -y rsync
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4 사용자 정의 도메인을 사용하고 CNAME 파일이 필요한 경우 .nojekyll 파일을 사용해야하는 경우 각 배포 후에이 파일을 재정렬하지 않고도 이러한 파일을 직접 배포 분기에 안전하게 커밋 할 수 있습니다. 추가로 배포 폴더에 이러한 파일을 포함시켜 업데이트 할 수 있습니다. 배포에 추가 파일을 추가 해야하는 경우 빌드 정리 단계에서 무시해야 할 경우 clean-exclude 옵션을 활용할 수 있습니다.
name : Build and Deploy
permissions :
contents : write
on :
push :
branches :
- main
jobs :
deploy :
concurrency : ci-${{ github.ref }}
runs-on : ubuntu-latest
steps :
- name : Checkout ?️
uses : actions/checkout@v4
- name : Install and Build ? # This example project is built using npm and outputs the result to the 'build' folder. Replace with the commands required to build your project, or remove this step entirely if your site is pre-built.
run : |
npm ci
npm run build
- name : Deploy
uses : JamesIves/github-pages-deploy-action@v4
with :
folder : build
clean : true
clean-exclude : |
special-file.txt
some/*.txt이 파일을 제거하려면 배포 브랜치로 직접 이동하여 제거해야합니다. 이는 배포 스크립트의 우발적 인 변경이 중단되는 변경 사항을 생성하는 것을 방지하기위한 것입니다.