我们有一个关于bitbucket jb_common的项目,地址 bitbucket.org/company/jb_common 我正在尝试运行一个容器,该容器将从另一个私有存储库 bitbucket.org/company/jb_utilsDockerfile:FROM golang# create a working directoryWORKDIR /app# add source codeCOPY . .### ADD ssh keys for bitbucketARG ssh_prv_keyARG ssh_pub_keyRUN apt-get update && apt-get install -y ca-certificates git-core sshRUN mkdir -p /root/.ssh && \ chmod 0700 /root/.ssh && \ echo "StrictHostKeyChecking no " > /root/.ssh/config && ls /root/.ssh/configRUN echo "$ssh_prv_key" > /root/.ssh/id_rsa && \ echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub && \ chmod 600 /root/.ssh/id_rsa && \ chmod 600 /root/.ssh/id_rsa.pubRUN git config --global url."git@bitbucket.org:".insteadOf "https://bitbucket.org/" && cat /root/.gitconfigRUN cat /root/.ssh/id_rsaRUN export GOPRIVATE=bitbucket.org/company/RUN echo "${ssh_prv_key}"RUN go get bitbucket.org/company/jb_utilsRUN cp -R .env.example .env && ls -la /app#RUN go mod downloadRUN go build -o main .RUN cp -R /app/main /main### Delete ssh credentialsRUN rm -rf /root/.ssh/ENTRYPOINT [ "/main" ] 并有 bitbucket-pipelines.ymlimage: python:3.7.4-alpine3.10pipelines: branches: master: - step: services: - docker caches: - pip script: - echo $SSH_PRV_KEY - pip3 install awscli - IMAGE="$AWS_IMAGE_PATH/jb_common" - TAG=1.0.${BITBUCKET_BUILD_NUMBER} - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_IMAGE_PATH - aws ecr list-images --repository-name "jb_common" --region $AWS_DEFAULT_REGION - docker build -t $IMAGE:$TAG --build-arg ssh_prv_key="$(echo $SSH_PRV_KEY)" --build-arg ssh_pub_key="$(echo $SSH_PUB_KEY)" . - docker push $IMAGE:$TAG
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
解决!!!管道当前不支持环境变量中的换行符,因此 base-64 通过运行以下内容对私钥进行编码:将结果输出到变量的 bitbucket 存储库变量。我编辑我的 bitbucket-pipelines.yml 到:base64 -w 0 < private_key
image: python:3.7.4-alpine3.10pipelines:
branches:
master:
- step:
services:
- docker
caches:
- pip
script:
- apk add --update coreutils
- mkdir -p ~/.ssh
- (umask 077 ; echo $SSH_PRV_KEY | base64 --decode > ~/.ssh/id_rsa)
- pip3 install awscli
- IMAGE="$AWS_IMAGE_PATH/jb_common"
- TAG=1.0.${BITBUCKET_BUILD_NUMBER}
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_IMAGE_PATH
- aws ecr list-images --repository-name "jb_common" --region $AWS_DEFAULT_REGION
- docker build -t $IMAGE:$TAG --build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa)" .
- docker push $IMAGE:$TAG- 1 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消
