使用gitlab实现CI

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用gitlab实现CI相关的知识,希望对你有一定的参考价值。

我在gitlab repo上有一个node.js,我试图使用CI管道将它推入AWS EC2 Ubntu服务器。

我试图在我的gitlab repo和EC2实例之间实现CI管道,每次我推送新代码时管道都会被触发,代码会自动转到EC2服务器。

我添加了带有名称的环境和yaml文件的url。 (url是安装了git的AWS服务器地址)

我当前的.gitlab-ci.yml文件如下所示:

image: node:6.10.3

stages:
  - ver
  - init
  - tests
  - deploy

ver:
  stage: ver
  script:
    - node --version
    - whoami
init:
  stage: init
  script:
    - npm cache clean
    - rm -rf node-modules
    - npm install
run_tests:
  stage: tests
  before_script: 
    - chmod 0777 ./node_modules/.bin/_mocha
  script:
    - npm test

deploy_staging:
  stage: deploy
  script:
    - echo "Going to deploy to staging server"
  environment:
    name: staging
    url: http://EC2DNS_Address.amazonaws.com/test/ci-test

  only:
    - master

当我提交新的更改时,我可以看到管道获取触发器,但我没有看到应用于服务器的任何更改。

如何将这些更改推送到我的ubuntu服务器?我需要的不仅仅是环境标签吗?

答案

是。您还需要使用脚本标记实现实际部署。我担心没有神奇的方式会发生这种情况。

因此,要么使用SCP或SSH命令,要么使用您用于将应用程序部署到environment中指定的服务器的任何内容。

正如Gitlab docs解释:

环境就像CI作业的标记,描述代码的部署位置。当作业将代码版本部署到环境时,会创建部署,因此每个环境都可以有一个或多个部署。

另一答案

检查部署阶段的状态以查找问题。

在AWS设置敏感变量(名称,访问键)的项目设置(在Gitlab中)上部署并在gitlab-ci.yml中使用它们

我认为这个link适合你。

以上是关于使用gitlab实现CI的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins + Gitlab + harbor + Kubernetes实现CI/CD

Jenkins + Gitlab + harbor + Kubernetes实现CI/CD

使用Gitlab实现自动化部署与持续集成

rancher+gitlab+appveyor 实现 CI/CD 流水线(汇总)

gitlab CI 管道检查代码格式

如何使用GitLab和Rancher构建CI/CD流水线–Part 1