Gitlab - Google compute engine 持续交付

3
我想做的是从GitLab到我的Google Cloud计算引擎实现持续交付。我在那里运行Ubuntu 16.04 TSL。我已经安装了所有需要运行项目的组件,如:Swift、vapor和nginx。
我已经成功安装了Gitlab Runner,并创建了一个可从我的gitlab repo访问的runner。每次我在主分支上推送时,runner都会触发。但由于以下原因导致失败:
could not create leading directories of '/home/gitlab-runner/builds/2bbbbbd/0/Server/Packages/vapor.git': Permission denied
如果我将权限更改为chmod -R 777,则会在对GitLab管道可见的构建阶段卡在运行阶段。我尝试过以下操作:
sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/builds sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/cache 但这并没有起到帮助作用,错误仍然是Permission denied。下面是我的.gitlab-ci.yml文件:
before_script:
  - swift --version

stages:
  - build
  - deploy

job_build:
  stage: build
  before_script:
  - vapor clean
  script:
  - vapor build --release
  only:
  - master

job_run_app:
  stage: deploy
  script:
    - echo "Deploy a  API"
    - vapor run --name=App --env=production
  environment:
    name: production

job_run_frontend:
  stage: deploy
  script:
    - echo "Deploy a  Frontend"
    - vapor run --name=Frontend --env=production
  environment:
    name: production

但是还没有进入下一个阶段,例如部署。我已经等了14个多小时了,但没有结果。并且...我还有几个问题:

  1. Gitlab runner在/home/gitlab-runner/builds/位置创建构建,在这个位置每个新工作都有自己的文件夹,例如/home/gitlab-runner/builds/2bbbbbd/,其中有我的项目和执行的命令。那么当第一个正在运行时,我如何部署新版本?端口被第一个实例阻塞,以此类推?
  2. 如果我想启用supervisor,每次部署文件夹都不同,我该怎么做?
  3. 有人可以解释、展示或指向教程,介绍如何在不使用Docker的情况下进行持续部署吗?

你是如何解决权限问题的?我自己也遇到了同样的问题。 - Anton Gregersen
我使用了 chmod -R 777,这对我来说有效。我知道这不是完美的解决方案,但出于测试目的,它还可以。然而,由于进程没有完成,它在 build 上挂起了。至于 CD,我现在瞄准 dpl。 - Shial
经过一些工作,我在gce上让“build”正常工作了。现在正在研究dpl以进行CD。 - Anton Gregersen
1个回答

1

如何使用GitLab runner启动服务

经过长时间的深入搜索,我终于找到了答案!完整的文章可以在上面找到。

简要地说,GitLab CI文档建议使用dpl进行部署。 Gitlab runner运行测试和处理应该结束。 Runner旨在在完成每个构建后终止所有创建的进程。 GitLab runner无法在目录之外执行操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接