승인된 GitHub 토큰을 사용하여 로컬 변경 사항을 GitHub에 푸시하기 위한 GitHub Actions입니다.
GitHub Actions 워크플로가 올바르게 작동하도록 하려면 각 저장소에 대한 적절한 액세스 권한으로 GITHUB_TOKEN
을 구성하는 것이 중요합니다.
필요한 권한을 설정하려면 다음 단계를 따르세요.
Settings
을 클릭합니다.Actions
클릭합니다.Actions
설정에서 General
찾아서 클릭하세요.Workflow permissions
섹션까지 아래로 스크롤합니다.GITHUB_TOKEN
에 대한 기본 권한 설정이 표시됩니다. Read and write permissions
옵션을 클릭합니다.설정 페이지를 종료하기 전에 변경 사항을 저장하세요.
메모
Read and write permissions
부여하면 워크플로에서 파일 및 코드 추가 또는 업데이트를 포함하여 리포지토리를 수정할 수 있습니다. 항상 이러한 권한으로 활성화하는 워크플로를 신뢰하는지 확인하세요.
GITHUB_TOKEN
권한은 워크플로의 모든 작업에 대해 전역적으로 구성하거나 각 작업에 대해 개별적으로 구성할 수도 있습니다.
이 예에서는 작업 수준에서 contents
및 pull-requests
범위에 필요한 권한을 설정하는 방법을 보여줍니다.
jobs :
job1 :
runs-on : ubuntu-latest
permissions : # Job-level permissions configuration starts here
contents : write # 'write' access to repository contents
pull-requests : write # 'write' access to pull requests
steps :
- uses : actions/checkout@v4
워크플로 내의 모든 작업에 영향을 미치는 권한을 전역적으로 적용하려면 다음과 같이 워크플로 파일의 루트 수준에서 permissions
키를 정의합니다.
permissions : # Global permissions configuration starts here
contents : read # 'read' access to repository contents
pull-requests : write # 'write' access to pull requests
jobs :
job1 :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
워크플로 요구 사항에 따라 권한 수준과 범위를 조정합니다. 각 권한 수준에 대한 자세한 내용은 GitHub 설명서를 참조하세요.
GitHub 플랫폼으로 인증하고 지정된 참조(예: 이미 사용 가능한 분기)에 변경 사항을 푸시하는 워크플로 예시:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
persist-credentials : false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
fetch-depth : 0 # otherwise, there would be errors pushing refs to the destination repository.
- name : Create local changes
run : |
...
- name : Commit files
run : |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
branch : ${{ github.ref }}
분기 매개변수를 사용하여 지정된 분기(예: Pull Request 분기)에 변경 사항을 푸시하는 워크플로 예시:
name : Example
on : [pull_request, pull_request_target]
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
branch : ${{ github.head_ref }}
force-with-lease 매개변수를 사용하여 저장소에 강제로 푸시하는 워크플로 예시:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
force_with_lease : true
결제 작업 내에서 기본 토큰과 함께 GitHub 앱 토큰을 사용하는 워크플로 예시입니다. 해당 주제에 대한 자세한 내용은 다음에서 확인할 수 있습니다.
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
persist-credentials : false
- name : Generate Githup App Token
id : generate_token
uses : tibdex/github-app-token@v1
with :
app_id : ${{ secrets.APP_ID }}
installation_id : ${{ secrets.INSTALLATION_ID }}
private_key : ${{ secrets.APP_PRIVATE_KEY }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ env.TOKEN }}
기본이 아닌 토큰을 사용하여 다른 저장소에 푸시하는 예시 워크플로입니다. 이러한 경우에는 force-with-lease 플래그가 불가능하다는 점에 유의하십시오.
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
token : ${{ secrets.PAT_TOKEN }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.PAT_TOKEN }}
repository : Test/test
force : true
기존 태그를 업데이트/덮어쓰는 워크플로 예시:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
- name : Commit files
run : |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git tag -d $GITHUB_REF_NAME
git tag $GITHUB_REF_NAME
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
force : true
tags : true
배포 키 또는 일반 SSH를 통해 GitHub 플랫폼으로 인증하는 워크플로 예시:
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ssh-key : ${{ secrets.SSH_PRIVATE_KEY }}
persist-credentials : true
- name : Create local changes
run : |
...
- name : Commit files
run : |
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
ssh : true
branch : ${{ github.ref }}
저장소 내부의 보호된 분기로 푸시하는 워크플로 예시입니다. 개인 액세스 토큰을 사용하고 actions/checkout
작업 내에서 사용해야 한다는 점에 유의하세요. 동기화 및 푸시 오류가 발생할 경우 force-with-lease 플래그를 지정하는 것이 좋습니다. 적절한 개인 액세스 토큰을 생성하려면 다음 지침을 따르세요.
jobs :
build :
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v4
with :
ref : ${{ github.head_ref }}
fetch-depth : 0
token : ${{ secrets.PAT_TOKEN }}
- name : Commit files
run : |
git config --local user.email "[email protected]"
git config --local user.name "Test"
git commit -a -m "Add changes"
- name : Push changes
uses : ad-m/github-push-action@master
with :
github_token : ${{ secrets.PAT_TOKEN }}
repository : Test/test
force_with_lease : true
이름 | 값 | 기본 | 설명 |
---|---|---|---|
github_token | 끈 | ${{ github.token }} | GITHUB_TOKEN 또는 범위가 지정된 저장소 개인 액세스 토큰. |
SSH | 불리언 | 거짓 | SSH/배포 키가 사용되는지 확인합니다. |
나뭇가지 | 끈 | (기본) | 변경 사항을 푸시할 대상 분기입니다.${{ github.ref }} 사용하여 전달할 수 있습니다. |
힘 | 불리언 | 거짓 | 강제 푸시 사용 여부를 결정합니다. |
force_with_lease | 불리언 | 거짓 | 강제 임대 푸시가 사용되는지 여부를 결정합니다. 결제 작업의 ref 섹션 내부에 해당 분기를 지정하세요(예: ref: ${{ github.head_ref }} . 브랜치와 해당 태그를 업데이트하려면 force_with_lease 옵션 대신 force 매개변수를 사용하십시오. |
원자 | 불리언 | 진실 | 원자적 푸시가 사용되는지 여부를 결정합니다. |
push_to_submodules | 끈 | '주문형' | --recurse-submodules=가 사용되는지 확인합니다. 값은 사용된 전략을 정의합니다. |
push_only_tags | 불리언 | 거짓 | 작업이 태그만 푸시해야 하는지 결정합니다. 기본값은 false입니다. |
태그 | 불리언 | 거짓 | --tags 사용되는지 확인합니다. |
예배 규칙서 | 끈 | '.' | 푸시하기 전에 변경할 디렉터리입니다. |
저장소 | 끈 | '' | 저장소 이름. 기본 또는 빈 저장소 이름은 다음을 나타냅니다. 현재 github 저장소. 다른 저장소로 푸시하고 싶다면, 개인 액세스 토큰을 만들어야 합니다 이를 github_token 입력으로 사용하세요. |
작업 출력에 다음 오류가 표시되고 기존 태그를 업데이트하려는 경우:
To https://github.com/Test/test_repository
! [rejected] 0.0.9 -> 0.0.9 (stale info)
error: failed to push some refs to 'https://github.com/Test/test_repository'
force_with_lease
매개변수 대신 force
사용하십시오. --force-with-lease
매개변수를 사용한 태그 업데이트는 불가능합니다.
이 프로젝트의 Dockerfile과 관련 스크립트 및 문서는 MIT 라이선스에 따라 릴리스됩니다.
GitHub는 GitHub, Inc.의 등록 상표입니다. 이 프로젝트에 사용된 GitHub 이름은 식별 목적으로만 사용됩니다. 이 프로젝트는 GitHub Inc.와 어떤 방식으로든 연관되어 있지 않으며 GitHub Inc.의 공식 솔루션이 아닙니다. GitHub 사이트의 사용을 용이하게 하기 위해 제공되었습니다.