private 리포지토리에서도 Jenkins와 S3를 사용하여 GithubPages와 같은 것을 시도했습니다.
7897 단어 JenkinsGitHubgithub-pagesS3AWS
목적
Github의 private 리포지토리에서 관리하는 정적 콘텐츠를 master 브랜치에 병합한 타이밍에 Jenkins에서 자동으로 AWS S3 버킷으로 전송하여 특정 IP에서만 볼 수 있도록 합니다.
배경
Github의 private 저장소에서도 GithubPages와 같은 기능을 실현할 필요가 있었다.
한편, 특정 IP로부터만의 열람 제한을 걸 필요가 있었다.
요점
Jenkins
Github의 private 저장소에서도 GithubPages와 같은 기능을 실현할 필요가 있었다.
한편, 특정 IP로부터만의 열람 제한을 걸 필요가 있었다.
요점
Jenkins
Github
개인 저장소에서 정적 콘텐츠 관리
S3
참고로 한 기사
작업
Jenkins
Github의 Webhook용 IP 권한
Github로부터 Webhook 통지를 받을 때는, 이하의 IP로부터 통신이 있는 것 같기 때문에, 보안 그룹이 되고 conf 파일이 되어, IP를 허가할 필요가 있습니다.
ip①192.30.252.0/22
②185.199.108.0/22
※ 자세한 내용은 이쪽
SSH 키 발급
그런 다음 Jenkins 서버에서 Jenkins 사용자의 SSH 키를 발행합니다.
이번에는 우선 이하의 커맨드로 바삭하게 작성해 버립니다.
commandssh-keygen -t rsa
여기서 만들어진 공개키는 나중에 Github 측에 등록하므로 삼가합시다.
Github 연결에 대한 자격 증명 만들기
다음에 위에서 작성한 비밀키를 사용해 Github와 접속하기 위한 인증 정보를 Jenkins에서 등록합니다.
Job 만들기
다음으로 Github에서 Webhook을 받았을 때 실행할 Job을 만들어 보겠습니다.
여기서 눌려야 할 포인트는
①192.30.252.0/22
②185.199.108.0/22
ssh-keygen -t rsa
알림을받을 분기 이름을 지정합니다
덧붙여 방금 등록하고 있던 인증 정보가 잘못되어 있으면, 선택했을 때에 이하와 같은 인증 에러가 나오므로 설정을 다시 한번 재검토합시다.
그런 다음 Job에서 실행할 쉘을 정의합니다.
이번에는 AWS-cli로 전송하므로 다음과 같습니다.
command
aws --profile {対象プロフィール} s3 cp {チェックアウトディレクトリ} s3://{対象バケット名} --recursive --acl public-read
위의 명령은 재귀적(--recursive)에 공개 설정(public-read)으로 체크아웃한 파일 모두를 전송한다는 설정이 되어 있습니다.
특정 파일을 전송하고 싶지 않아! 등이 있으면 각자 기호로 조정하십시오.
이것으로 Jenkins 측 설정이 완료됩니다.
Github
SSH 설정
방금 만든 Jenkins의 공개 키를 등록합니다.
복사하고 저장! !
Webhook 설정
그런 다음 Jenkins에게 알림을 실행하려는 리포지토리에 Webhook을 설정합니다.
S3
버킷 정책 설정
다음과 같이 버킷 정책을 설정합니다.
정책
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::{転送先バケット名}",
"arn:aws:s3:::{転送先バケット名}/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"{許可するIP}",
"{JenkinsサーバーのIP}"
]
}
}
}
]
}
※Jenkins 서버로부터 AWS-cli로의 통신을 허가할 필요가 있으므로 잊지 않도록 설정합시다.
확인
이제 준비가 되었습니다.
시험에 master 브랜치에 병합을 시도하십시오.
Jenkins에서 Job이 달리고,
S3로 콘텐츠가 전송되고,
브라우저에서 표시됩니다.
허용하지 않는 IP는 403 오류가 발생합니다.
끝에
뭐라고는 GithubPages의 완성☆
Reference
이 문제에 관하여(private 리포지토리에서도 Jenkins와 S3를 사용하여 GithubPages와 같은 것을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/bakira/items/db71f78eea6ad2855d12
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
뭐라고는 GithubPages의 완성☆
Reference
이 문제에 관하여(private 리포지토리에서도 Jenkins와 S3를 사용하여 GithubPages와 같은 것을 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bakira/items/db71f78eea6ad2855d12텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)