【发布时间】:2019-07-15 09:31:42
【问题描述】:
我正在做一个简单的项目。
我在 CI/CD 管道中使用 circleci。
当我推送一个提交时,构建运行,测试运行,如果它们通过,那么应用程序被打包到一个 docker 镜像中。
然后图像被推送到 dockerhub,从这里我可以在 docker compose 或 kubernetes 中将图像拉下来。
这一切都很完美。
我的问题是如何将 docker-hub 凭据传递给 circleci 而不会通过将它们提交到源代码控制而将它们暴露给公众?
在以前的项目中,我觉得我在 AWS 上部署了一个无服务器框架项目,为此我确信我将我的 AWS 凭据存储在 circleci 的某个地方,这样我就可以在我的 .circleci/ 中安全地引用它们config.yml。
这是很久以前的事了,我不知道怎么做。
谁能指出我正确的方向?
我提供我的 config.yml 只是为了更简洁地说明我的工作流程。
version: 2
jobs:
build:
docker:
- image: circleci/golang:1.11
environment:
TEST_RESULTS: /tmp/test-results
steps:
- checkout
- run: mkdir -p $TEST_RESULTS
- restore_cache:
keys:
- v1-pkg-cache
- run: go get github.com/lib/pq
- run: go get github.com/mattes/migrate
- run: go get github.com/jstemmer/go-junit-report
- run: go mod download
- run: go build
- run:
name: Run unit tests
command: go test ./...
- save_cache:
key: v1-pkg-cache
paths:
- "/go/pkg"
- run:
name: Start service
command: go run main.go
background: true
- store_artifacts:
path: /tmp/test-results
destination: raw-test-output
- store_test_results:
path: /tmp/test-results
- setup_remote_docker:
docker_layer_caching: true
# TODO: need to pull docker-hub credentials safely from environment variables and then the docker image can be pushed up to dockerhub.
- run:
name: build and push container
command: |
docker build -t myrepo/im-projects:LATEST -t myrepo/im-projects:v0.0.1 .
echo $DOCKER_PWD | docker login -u username -p password
docker push myrepo/im-projects:LATEST
【问题讨论】:
-
我相信环境变量是您正在寻找的。 circleci.com/docs/2.0/env-vars
-
对于仍在寻找管理无服务器应用程序机密的方法的任何人,这里有一个帖子 - seed.run/blog/how-to-manage-secrets-for-your-serverless-app
标签: docker environment-variables circleci dockerhub circleci-2.0