为了账号安全,请及时绑定邮箱和手机立即绑定

Docker,从bitbucket私有存储库中获取

Docker,从bitbucket私有存储库中获取

Go
宝慕林4294392 2022-08-24 20:25:41
我们有一个关于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


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号