GitHub API에서 GitHub Branch 보호 설정
GitHub Branch Protection
GitHub의 Branch Protection 기능은 다음과 같은 기능을 실현할 수 있으며 GitHub가 운용하는 규칙을 강제로 준수할 수 있어 매우 편리하다.
master
직접 금지push
지점 금지수동 설정
GitHub 웹 사이트에서 Branch 보호를 수동으로 설정할 수 있습니다.
[Your Repository] => [Settings] => [Branches]
그러면 설정 화면에 도착합니다.
각 항목의 의미는 https://dev.classmethod.jp/tool/github/protect-branch/ 등을 참조하십시오.
GitHub API를 통한 설정
다만, 새로운 프로젝트를 할 때마다 보치로 설정해 놓으니 촌스럽다.
GitHub API를 사용하여 자동으로 설정합니다.
자동 설정 스크립트protect.sh
및 Branch Protection 설정 파일protections.json
을 다음과 같이 구성합니다..
└── .github
├── protect.sh
└── protections.json
다음 명령을 실행하면 설정할 수 있습니다.$ bash .github/protect.sh
스크립트 자동 구성
스크립트를 실행하려면 다음 명령이 필요합니다. 넣으십시오.
다만, 새로운 프로젝트를 할 때마다 보치로 설정해 놓으니 촌스럽다.
GitHub API를 사용하여 자동으로 설정합니다.
자동 설정 스크립트
protect.sh
및 Branch Protection 설정 파일protections.json
을 다음과 같이 구성합니다..
└── .github
├── protect.sh
└── protections.json
다음 명령을 실행하면 설정할 수 있습니다.$ bash .github/protect.sh
스크립트 자동 구성
스크립트를 실행하려면 다음 명령이 필요합니다. 넣으십시오.
hub: GitHub API 클라이언트
jq: json을 투시하는 명령
$ brew install hub
$ brew install jq
스크립트 코드는 다음과 같습니다.기본적으로 이걸 직접 복사하면 움직일 거예요.
protect.sh
#!/bin/bash
DIR=$(cd $(dirname $0); pwd)
hub api user
echo -e "\nLogged in.\n\n"
TOKEN=`cat ~/.config/hub | grep oauth_token | sed "s/ //g" | sed "s/oauth_token://g"`
REPO=`git config --get remote.origin.url | sed s/[email protected]://g | sed s/.git$//g`
RES=`cat "${DIR}/protections.json" | jq -r 'to_entries[] | "\(.key)__DELIMITER__\(.value)"'`
for line in ${RES}; do
BRANCH=`echo ${line} | sed -e "s/__DELIMITER__.*$//g"`
BODY=`echo ${line} | sed -e "s/^.*__DELIMITER__//g"`
curl \
-X PUT \
-H "Accept: application/vnd.github.luke-cage-preview+json" \
-H "Authorization: token ${TOKEN}" \
"https://api.github.com/repos/${REPO}/branches/${BRANCH}/protection" \
-d ${BODY}
done
다섯 번째 줄의hup api user
의 곳GitHub API
의 token
을 얻지 못하면 id,password를 물어보고 입력하면 token
를 얻어 설정 파일에 저장합니다.프로파일
설정 파일protections.json
은 다음과 같습니다.
protections.json{
"dev": {
"required_status_checks": {
"strict": true,
"contexts": [
"ci/circleci"
]
},
"required_pull_request_reviews": {
"dismiss_stale_reviews": true,
"require_code_owner_reviews": false,
"required_approving_review_count": 1
},
"enforce_admins": true,
"restrictions": null
},
"master": {
"required_status_checks": {
"strict": true,
"contexts": [
"ci/circleci"
]
},
"required_pull_request_reviews": {
"dismiss_stale_reviews": true,
"require_code_owner_reviews": false,
"required_approving_review_count": 1
},
"enforce_admins": true,
"restrictions": null
}
}
이것은{
"ブランチ名1": { /* Branch Protectionの設定 */ },
"ブランチ名2": { /* Branch Protectionの設定 */ },...
}
의 구조, Branch Protection의 설정 부분은
https://developer.github.com/v3/repos/branches/#update-branch-protection
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.
이 예에서는 master
브랜치와 dev
브랜치를 통합할 때 하나 이상의 심사를 거쳐야 하며 CircleCI가 성공적으로 끝나지 않았을 때 통합할 수 없습니다.
끝날 때
이번 소스도 https://github.com/Arahabica/GitHubProtectionSample 위에 올린다.
Reference
이 문제에 관하여(GitHub API에서 GitHub Branch 보호 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Arahabica/items/15b20405663b2fcc6ae1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"dev": {
"required_status_checks": {
"strict": true,
"contexts": [
"ci/circleci"
]
},
"required_pull_request_reviews": {
"dismiss_stale_reviews": true,
"require_code_owner_reviews": false,
"required_approving_review_count": 1
},
"enforce_admins": true,
"restrictions": null
},
"master": {
"required_status_checks": {
"strict": true,
"contexts": [
"ci/circleci"
]
},
"required_pull_request_reviews": {
"dismiss_stale_reviews": true,
"require_code_owner_reviews": false,
"required_approving_review_count": 1
},
"enforce_admins": true,
"restrictions": null
}
}
{
"ブランチ名1": { /* Branch Protectionの設定 */ },
"ブランチ名2": { /* Branch Protectionの設定 */ },...
}
이번 소스도 https://github.com/Arahabica/GitHubProtectionSample 위에 올린다.
Reference
이 문제에 관하여(GitHub API에서 GitHub Branch 보호 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Arahabica/items/15b20405663b2fcc6ae1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)