首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从远程存储库(github-actions,gitlab)构建对接者映像,其中包含env和来自另一个远程回购的秘密?

从远程存储库(github-actions,gitlab)构建对接者映像,其中包含env和来自另一个远程回购的秘密?
EN

Stack Overflow用户
提问于 2022-02-11 14:21:00
回答 1查看 411关注 0票数 2

我在GitHub有一个(私有)存储库,它包含我的项目和集成的GitHub-actions,它正在构建一个对接映像,并将其直接推到GHCR上。

但是,我在存储和将秘密传递给我的构建映像方面有问题。我的项目有以下结构:

代码语言:javascript
复制
.git (gitignored)
.env (gitignored)
config (gitignored) / config files (jsons)
src (git) / other folders and files

如您所见,我有.env文件和config文件夹。它们都存储数据或文件,这些数据或文件不是在回购程序中,而是在构建的环境中。

所以我想问一下,有没有选择不将所有这些文件传递给我的主要远程回购(即使它是私有的),而是在构建阶段在github操作中链接它们?

在另一个单独的私人远程回购系统中,在其他地方,私下发布env &

并不是一个问题。重点不是将这些文件推送到主私有回购中,因为RBAC逻辑不允许我限制对所选文件的访问。

如果你知道如何解决这个问题的话,任何其他使用GitLab CI或BitBucket的建议也很感激。不要害羞地分享它!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-06 07:56:28

所以这个问题似乎有点热,所以我找到了答案。

上面所示的示例基于node.js和nest.js应用程序,并从GitHub中提取私有的远程回购。

在我的例子中,这个场景是从单独的私有回购配置文件和其他秘密中提取出来的。在容器构建过程中,我们将它们与我们的项目合并。此选项不涉及容器内部机密的安全性。但是,为了使项目的一部分(业务逻辑的回购本身)可供其他开发人员使用(在您的开发回购中,他们不会从单独的私人回购中看到证书和信任)和具有单独访问权限的秘密私人回购。

您需要您的个人访问令牌(PAT),在github上您可以在这里找到它:

对于GitLab来说,流仍然是一样的。您需要从设置中的某个地方传递令牌。此外,只是一个好的建议,不仅创建一个,但两个对接文件,在测试之前。

为什么是https而不是ssh?在这种情况下,您还需要传递ssh键并正确配置客户端。由于CRLFLF格式,ssh所支持的密码标志等等,这有点复杂。

代码语言:javascript
复制
# it could be Go, PHP, what-ever
FROM node:17

# you will need your GitHub token from settings
# we will pass it to build env via GitHub action
ARG CR_PAT
ENV CR_PAT=$CR_PAT

# update OS in build container
RUN apt-get update
RUN apt-get install -y git

# workdir app, it is a cd (directory)
WORKDIR /usr/src/app

# installing nest library
RUN npm install -g @nestjs/cli

# config git with credentials
# we will use https since it is much easier to config instead of ssh
RUN git config --global url."https://${github_username}:${CR_PAT}@github.com/".insteadOf "https://github.com/"

# cloning the repo to WORKDIR
RUN git clone https://github.com/${github_username}/${repo_name}.git

# we move all files from pulled repo to root of WORKDIR
# including files named with dot at the beginning (like .env)
RUN mv repo_folder/* repo_folder/.[^.]* . && rmdir repo_folder/

# node.js stuff
COPY package.json ./

RUN yarn install

COPY . .

RUN nest build app

CMD wait && ["node"]

因此,您将看到一个完整的容器,其中包含您的代码与文件合并,以及我们从其他单独的repo中提取的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71081615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档