Действия GitHub для отправки локальных изменений в GitHub с использованием авторизованного токена GitHub.
Чтобы обеспечить правильную работу рабочих процессов 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 }}
Пример рабочего процесса использования параметра ветки для отправки изменений в указанную ветку, например ветку запроса на включение:
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 }}
Пример рабочего процесса для использования отправки токена не по умолчанию в другой репозиторий. Имейте в виду, что флаг принудительного использования с арендой в таком случае невозможен:
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
Пример рабочего процесса аутентификации на платформе GitHub через ключи развертывания или в общем SSH:
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
. Возможно, будет хорошей идеей указать флаг принудительной аренды на случай ошибок синхронизации и отправки. Если вы хотите сгенерировать соответствующий токен личного доступа, вы можете следовать этим инструкциям:
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/. |
ветвь | нить | (по умолчанию) | Ветка назначения для отправки изменений. Можно передать с помощью ${{ github.ref }} . |
сила | логическое значение | ЛОЖЬ | Определяет, используется ли принудительное нажатие. |
Force_with_lease | логическое значение | ЛОЖЬ | Определяет, используется ли принудительное принудительное использование с арендой. Укажите соответствующую ветку внутри раздела ref действия оформления заказа, например ref: ${{ github.head_ref }} . Имейте в виду: если вы хотите обновить ветку и соответствующий тег, используйте параметр force вместо опции force_with_lease . |
атомный | логическое значение | истинный | Определяет, используется ли атомарный толчок. |
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
вместо параметра force_with_lease
. Обновление тега с параметром --force-with-lease
невозможно.
Dockerfile и связанные с ним сценарии и документация в этом проекте выпущены под лицензией MIT.
GitHub являются зарегистрированными торговыми марками GitHub, Inc. Название GitHub, используемое в этом проекте, предназначено только для идентификации. Проект никак не связан с GitHub Inc. и не является официальным решением GitHub Inc. Он стал доступен с целью облегчить использование сайта GitHub.