我正在开发一个Node.js应用程序,其当前的Dockerfile
如下所示:
# Stage 0
# =======
FROM node:10-alpine as build-stage
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install
COPY . ./
RUN yarn build
# Stage 1
# =======
FROM nginx:mainline-alpine
COPY --from=build-stage /app/build /usr/share/nginx/html
我想将其集成到GitLab CI管道中,但是我不确定我是否有基本想法。到目前为止,我知道我需要创建一个.gitlab-ci.yml
文件,以后再由GitLab提取。
我的基本想法是:
Dockerfile
构建一个新的Docker映像。所以我的问题是:
然后,我的.gitlab-ci.yml
应该包含类似build
的工作,它会触发...什么? docker build
命令?还是我需要将Dockerfile
内容“复制”到CI文件?
答案 0 :(得分:2)
GitLab CI在Runners中执行需要使用生成的令牌(Settings / CI CD / Runners)将其注册到项目中的管道。您也可以将Shared Runners用于多个项目。管道是使用.gitlab-ci.yml
文件配置的,并且在仓库中完成某些操作(推送到分支,合并请求等)后,您可以使用yaml文件build, test, push and deploy docker images。
当您的应用程序已经具有可用于 可用于创建和测试图像
因此,基本上,您需要安装运行程序,将其注册为项目的令牌(或使用共享运行程序)并配置CI yaml文件。推荐的方法是docker in docker,但要由您决定。您还可以检查this basic example。最后,您可以将容器直接部署到Kubernetes,Heroku或Rancher中。请记住,在“设置/变量”中安全地配置您的凭据和机密。
结论
GitLab CI很棒,但是我建议您首先考虑一下要使用的git工作流程,以便在.gitlab-ci.yml
文件中设置阶段。这将允许您将节点项目配置为管道,然后可以轻松导出到其他工具,例如Jenkins管道或Travis。
答案 1 :(得分:0)
构建作业触发器:
选项1:
在作业中添加when: manual
,您可以在CI / CD>管道
选项2:
only:
- <branchname>
在这种情况下,当您进入定义的分支时,作业开始 (这是我个人的建议)
选项3: 添加nothin”,每次按下代码时作业就会运行
您可以结合上面的选项。
此外,可以通过使用作业令牌将作业与Web请求一起显示。
docker build
命令将在管道中运行。我认为在脚本部分。
要求gitlab-runner上的docker引擎来接班。
还是我需要将Dockerfile内容“复制”到CI文件?
否