Bitbucket의 OAuth로 리포지토리 복제
배경
Infrastructure as Code에서 프라이빗 리포지토리에서 소스 코드를 끌어 와서 빌드 혹은 배포하고 싶다고 하는 경우가 자주 있다(라고 생각한다).
그러나 코드 안이나 환경 변수에 리포지토리의 사용자 이름, 비밀번호 등의 계정 정보를 쓰는 것은 그리 스마트하지 않습니다.
이 글에서는 Bitbucket의 OAuth를 사용하여 Docker 컨테이너 내에 코드를 배포하는 방법을 설명한다.
Bitbucket의 OAuth 설정
우선은 Bitbucket OAuth를 설정하고 Credential을 사용하여 Bitbucket에 API 액세스할 수 있도록 한다.
3. 지금 작성한 소비자 키의 열쇠·시크릿을 메모해 둔다. 이것으로 OAuth 준비 완료
액세스 토큰 얻기
공식 를 참고한다.
액세스 토큰의 취득은 이하의 커멘드로 가능.
h tps : // / t t c c t. rg / 해 / 오 th2 / 아세스 s_ 토켄 을 두드려 인증에 성공하면 JSON이 돌아오므로 jq 명령으로 구문 분석하여 access_token을 얻는다.
jq 명령 설치가 필요합니다.
# 上記の鍵とシークレットを設定する
$ BB_OAUTH_KEY=****
$ BB_OAUTH_SECRET=****
# API叩いて帰ってきたJSONからjqコマンドで`access_token`を取得する。
$ curl https://bitbucket.org/site/oauth2/access_token \
-d grant_type=client_credentials \
-u ${BB_OAUTH_KEY}:${BB_OAUTH_SECRET} \
| jq -r '.access_token'
Dockerfile에서 이미지 만들기
이미지를 빌드할 때, 호스트 머신으로부터 변수를 건네주는 것으로, Dockerfile내에 크리덴셜 정보를 남기지 않게 할 수 있다. 또한 위의 명령을 사용하여 액세스 토큰을 얻고 저장소를 복제합니다.
Dockerfile
# ベースイメージは何でもOK
FROM python:3.6.4-alpine3.7
# build時の変数
ARG BB_OAUTH_KEY
ARG BB_OAUTH_SECRET
RUN apk update
RUN apk add curl
RUN apk add jq
RUN apk add git
# USER_NAME, REPOSITORY_NAME は適宜書き換えてください
RUN git clone https://x-token-auth:`curl https://bitbucket.org/site/oauth2/access_token -d grant_type=client_credentials -u ${BB_OAUTH_KEY}:${BB_OAUTH_SECRET} \
| jq -r '.access_token'`@bitbucket.org/USER_NAME/REPOSITORY_NAME
빌드 명령
$ docker build -f ./Dockerfile --build-arg BB_OAUTH_KEY="****" BB_OAUTH_SECRET="****" .
이것으로 빌드는 완료.
환경 변수를 매번 쓰는 것이 번거로울 때는,
--build-arg
를 지정하지 않고 호스트 머신의 환경 변수로부터에서도 취득해 준다.
Reference
이 문제에 관하여(Bitbucket의 OAuth로 리포지토리 복제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ukiuki-satoshi/items/90e7ee2e33ca8b530bd6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)