前言:因为找了B站内推,测试开发,正好知道内部使用GitLab做自动化测试,所以简单学了一下,有错误的地方请指正。

入门

初始化

  • cp: 无法获取'/root/node-v12.9.0-linux-x64' 的文件状态(stat): 权限不够

    • 原因:源地址或目标地址有问题
  • E212:无法打开并写入文件

    • 原因:权限不够;解决:从root权限终端打开sudo su
  • 安装启动Nginx:

    1. # 启动
    2. nginx
    3. # 停止
    4. nginx stop
    5. # 安全退出
    6. nginx -s quit
    7. # 重新加载配置文件
    8. nginx -s reload
    9. # 查看nginx进程
    10. ps aux|grep nginx
  • 安装 GitLab

    1. #下载包
    2. wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/xenial/gitlab-ce_12.1.4-ce.0_amd64.deb/download.deb
    3. #本地
    4. dpkg -i gitlab-ce_12.1.4-ce.0_amd64.deb
    5. #修改配置
    6. vim /etc/gitlab/gitlab.rb
    7. external_url 'http://192.168.10.123:XXXX(端口号)'
    8. sudo gitlab-ctl reconfigure
  • 常用命令

    1. # 启动gitlab服务
    2. sudo gitlab-ctl start
    3. # gitlab服务停止
    4. sudo gitlab-ctl stop
    5. # 重启gitlab服务
    6. sudo gitlab-ctl restart
  • 推送命令

    1. git init
    2. git remote add origin http://192.168.195.131:1874/root/test_project.git
    3. git add .
    4. git commit -m "Initial commit"
    5. git push -u origin master

配置 CI/CD

安装 gitlab-runner

  1. # 下载
  2. wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
  3. # 分配运行权限
  4. chmod +x /usr/local/bin/gitlab-runner
  5. # 创建用户
  6. useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
  7. # 安装
  8. itlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
  9. # 运行
  10. gitlab-runner start

新建 runner

  1. # 注册 runner
  2. gitlab-runner register
  3. # 输入 gitlab 的访问地址
  4. http://192.168.26.139:1874
  5. # 输入 runner token,把开 http://192.168.26.139:1874/admin/runners 页面查看
  6. 63AyFAthj7s7sNy3JDwu
  7. # runner 描述,随便填
  8. 测试webpack-vue项目部署
  9. # runner tag
  10. webpack-vue-cicd
  11. # 输入(选择) shell
  12. shell

编写 .gitlab-ci.yml 文件

.gitlab-ci.yml 文件是存放在项目的根目录下的,要提交到gitlab上面,runner 会根据 .gitlab-ci.yml 编写的规则自动部署项目。

  1. # 阶段
  2. stages:
  3. - build
  4. - deploy
  5. # 缓存 node_modules 减少打包时间,默认会清除 node_modules 和 dist
  6. cache:
  7. paths:
  8. - node_modules/
  9. # 拉取项目,打包
  10. build:
  11. stage: build # 阶段名称 对应,stages
  12. tags: # runner 标签(注册runner时设置的,可在 admin->runner中查看)
  13. - webpack-vue-cicd
  14. script: # 脚本(执行的命令行)
  15. - cd ${CI_PROJECT_DIR} # 拉取项目的根目录
  16. - npm install # 安装依赖
  17. - npm run build # 运行构建命令
  18. only:
  19. - main #拉取分支
  20. artifacts: # 把 dist 的内容传递给下一个阶
  21. paths:
  22. - dist/
  23. # 部署
  24. deploy:
  25. stage: deploy # 阶段名称 对应,stages
  26. tags: # runner 标签(注册runner时设置的)
  27. - webpack-vue-cicd
  28. script: # 脚本(执行的命令行)
  29. - rm -rf /www/wwwroot/webpack_vue_cicd/*
  30. - cp -rf ${CI_PROJECT_DIR}/dist/* /www/wwwroot/webpack_vue_cicd/ # 把包完成,复制 dist 下的文件到对应的项目位置

更进一步

  • 一旦你已经添加了.gitlab-ci.yml到仓库中,GitLab将检测到该文件,并使用名为GitLab Runner的工具运行你的脚本。该工具的操作与终端类似。

  • 这些脚本被分组到jobs,它们共同组成一个pipeline。一个最简单的.gitlab-ci.yml文件可能是这样的:

  1. 1.before_script:
  2. 2. - apt-get install rubygems ruby-dev -y
  3. 3.
  4. 4.run-test:
  5. 5. script:
  6. 6. - ruby --version 6
  • before_script属性将在运行任何内容之前为你的应用安装依赖,一个名为run-test的job(作业)将打印当前系统的Ruby版本。二者共同构成了在每次推送到仓库的任何分支时都会被触发的pipeline(管道)。

  • GitLab CI/CD不仅可以执行你设置的job,还可以显示执行期间发生的情况,正如你在终端看到的那样:

  • 一个简单的管道通常包括三个阶段:build、test、deploy

1、首先,定义.gitlab-ci.yml文件。在这个文件中就定义了要执行的job和命令

2、接着,将文件推送至远程仓库

3、最后,配置Runner,用于运行job

发件邮箱配置#

在pipline流程执行过程中,我们希望有任何风吹草动都能及时收到消息,邮件就是一个比较好的提醒方式。

  1. vi /etc/gitlab/gitlab.rb
  2. gitlab_rails['smtp_enable'] = true
  3. gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
  4. gitlab_rails['smtp_port'] = 465
  5. gitlab_rails['smtp_user_name'] = "xxxx@yyyy.com"
  6. gitlab_rails['smtp_password'] = "xxxxxxxx"
  7. gitlab_rails['smtp_domain'] = "exmail.qq.com"
  8. gitlab_rails['smtp_authentication'] = "login"
  9. gitlab_rails['smtp_enable_starttls_auto'] = true
  10. gitlab_rails['smtp_tls'] = true
  11. ### Email Settings
  12. gitlab_rails['gitlab_email_enabled'] = true
  13. ##! If your SMTP server does not like the default 'From: gitlab@gitlab.example.com'
  14. ##! can change the 'From' with this setting.
  15. ##! 要与上面的 smtp_user_name 保持一致
  16. gitlab_rails['gitlab_email_from'] = 'xxxx@yyyy.com'
  17. # gitlab_rails['gitlab_email_display_name'] = 'Example'
  18. # gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
  19. # gitlab_rails['gitlab_email_subject_suffix'] = ''
  20. # gitlab_rails['gitlab_email_smime_enabled'] = false
  21. # gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/gitlab_smime.key'
  22. # gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/gitlab_smime.crt'
  23. # gitlab_rails['gitlab_email_smime_ca_certs_file'] = '/etc/gitlab/ssl/gitlab_smime_cas.crt'

gitlab-ctl reconfigure使配置生效

测试

  1. Copygitlab-rails console
  2. irb(main):003:0> Notify.test_email('whatever@qq.com', 'Message Subject', 'Message Body').deliver_now

登录whatever@qq.com查看受否收到信件。

GitLab CI/CD 自动化部署入门的更多相关文章

  1. .Net Core自动化部署系列(三):使用GitLab CI/CD 自动部署Api到Docker

    之前写过使用Jenkins实现自动化部署,最近正好没事研究了下GitLab的自动化部署,顺便记录一下. 使用GitLab部署我们需要准备两件事,第一个起码你得有个GitLab,自己搭建或者使用官方的都 ...

  2. Gitlab Runner实现CI/CD自动化部署asp.net core应用

    环境说明 一台git服务器(192.168.169.7),安装gitlab,docker. 一台web服务器(192.168.169.6),安装git,gitlab runner,docker,dot ...

  3. GitLab CI/CD的官译【原】

    CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...

  4. 使用 Gitlab CI/CD 实现自动化发布站点到 IIS

    说明 这里先介绍下两个东西 CI/CD.GitLab Runner,当然在此之前你需要对 git 有所了解,关于 git 这里不做说明,可以自行百度. 首先介绍 CI/CD :随着我们开发方式的转变, ...

  5. 实践分享!GitLab CI/CD 快速入门

    用过 GitLab 的同学肯定也对 GitLab CI/CD 不陌生,GitLab CI/CD 是一个内置在 GitLab 中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建.测试和验证代码 ...

  6. 前端初探 Gitlab CI/CD

    前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就是其中一项,那么什么是 C ...

  7. Gitlab CI/CD

    Gitlab CI/CD 前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就 ...

  8. 基于 Docker 和 GitLab 的前端自动化部署实践笔记

    基于 Docker 和 GitLab 的前端自动化部署 实践笔记 随着接触的项目越来越多,在部署测试流程上重复耗时工作也越来越多,所以对前端工作的CI/CD实现愈发迫在眉睫. 前端开发由于三大框架的崛 ...

  9. .NetCore 配合 Gitlab CI&CD 实践 - 单体项目

    前言 上一篇博文 .NetCore 配合 Gitlab CI&CD 实践 - 开篇,主要简单的介绍了一下 GitLab CI 的持续集成以及持续部署,这篇将通过 GitLab CI 发布一个 ...

随机推荐

  1. 【原创】Magisk Root隐藏模块 Shamiko安装

    本文所有教程及源码.软件仅为技术研究.不涉及计算机信息系统功能的删除.修改.增加.干扰,更不会影响计算机信息系统的正常运行.不得将代码用于非法用途,如侵立删! Root隐藏模块 Shamiko安装 操 ...

  2. 简单学习一下ibd数据文件解析

    来源:原创投稿 作者:花家舍 简介:数据库技术爱好者. GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 简单学习一下数据文件解析 这是尝试使用Golang语言简单解析My ...

  3. DolphinScheduler 在绿瘦的实践成果,开启了我的开源之路!

    点击上方 蓝字关注我们 ✎ 编 者 按 2021 年,Apache DolphinScheduler 社区又迎来了新的蓬勃发展,社区活跃度持续提高.目前,项目 GitHub Star 已达 6.7k, ...

  4. 新一代大数据任务调度 - Apache DolphinScheduler喜提十大开源新锐项目 & 最具人气项目

    经 10000+ 开发者公开票选,20+专家评审. 10+ 主编团打分,历经数月打磨,11 月 19 日,由InfoQ 发起并组织的[2020中国技术力量年度榜单评选]结果正式揭晓. 2020 年度十 ...

  5. 客户流失?来看看大厂如何基于spark+机器学习构建千万数据规模上的用户留存模型 ⛵

    作者:韩信子@ShowMeAI 大数据技术 ◉ 技能提升系列:https://www.showmeai.tech/tutorials/84 行业名企应用系列:https://www.showmeai. ...

  6. WebStorm 配置 Vue3 的文件模板

    WebStorm 默认的 Vue 模板不是 setup 函数(组合式 API)模板,而是 Options API 模板.在设置中搜索 File and Code Templates 编辑创建 vue ...

  7. spring使用junit单元测试

    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test& ...

  8. java单线程100%利用率

    容器内就获取个cpu利用率,怎么就占用单核100%了呢 背景:这个是在centos7 + lxcfs 和jdk11 的环境上复现的 目前这个bug已经合入到了开源社区, 链接为 https://git ...

  9. 关于Copy On Write Array List,你会安全使用么

    摘要:JDK中提供了CopyOnWriteArrayList类,简称COW.为了将读取的性能发挥到极致,CopyOnWriteArrayList读取是完全不用加锁的,并且更厉害的是:写入也不会阻塞读取 ...

  10. 小k工具箱

    个人开发软件 大小:21mb左右 基于JavaScript开发 支持系统:安卓/iOS/鸿蒙 未来可期上架各大应用市场 预览图 永久更新维护地址 官方讲解