我们做了个简单的docsify帮助网页,因为多人协作,加上源文件都是md格式的,于是把它放在了自己的gitlab上。但是这样一来问题就是如果要发布文件,必须每次更新完都让服务器管理员去到服务器上执行一下拉取,显然不合理,看到gitlab的ci/cd功能,正好研究下,记录下来。

ci/cd介绍

什么是ci/cd?红帽是这么说的:

CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD 的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时所引发的问题(亦称:“集成地狱”)。
ref: https://www.redhat.com/zh/topics/devops/what-is-ci-cd

那么在我的场景里,就是当有人commit并且push到gitlab之后,能自动在服务器上下载这些文件。

使用方法

0.基本环境

我们的环境很简单,也没有测试服务器,一台Windows作为发布服务器,使用docsify作为源文件,由于docsify支持服务器刷新,所以只要能覆盖文件就行了,连重启服务器都不需要。

1.安装Runner

首先需要在发布服务器上安装Gitlab Runner,把它理解为一个Agent可能更好一点,他负责处理各种任务下达,文件拉取等工作。

在这里下载Gitlab Runner :https://docs.gitlab.com/runner/install/index.html
下载完将他放到某个目录下。

2.配置Runner

Runner的权限可以针对管理员、某个仓库、某个组。我们这里针对组来设置。
我们来到gitlab仓库。找到设置,CI/CD,找到Runner并展开,这里可以看到你的Runner配置,将Token复制下来。

在发布服务器上,打开cmd,运行gitlab-runner.exe register就可以了。下面会分别让你输入tokengitlab地址等等。
另外下面的操作方式选择了shell,我们看到还有docker等方式。我们暂时用不到。

然后在运行gitlab-runner.exe install,将他注册为服务并启动即可。

此时在仓库里已经可以看到Runner为绿色了。

另外,不知道是不是bug,windows如果选择shell的话,默认在runner文件夹下的config.toml文件,runner下的shell参数是pwsh,而这个pwsh是无法执行的,会报错。需要手工改成powershell才行。

配置.gitlab-ci.yml文件

.gitlab-ci.yml文件其实就是告诉runner,什么时候做什么事情。我的示例如下:

pages:#部署服务器(仅下载即可)stage: deployvariables:targetPath_working: D:\help#将文件cp到d:\help目录,即上述变量。script:- echo $CI_PROJECT_DIR- echo $targetPath_working- echo $CI_PROJECT_DIR\*---------to---------$targetPath_working- rm -r $targetPath_working\*- cp -r $CI_PROJECT_DIR\* $targetPath_working
# 只针对master分支生效only:- master

其实就可以看到具体的操作模式了。

测试

我们可以尝试着commit一个修改到git仓库,观察gitlab,可以看到流水线已经开始执行了。同时到Windows发布服务器上,我们可以看到服务器在下载gitlab上的文件,并拷贝到目录,也就是我们在.gitlab-ci.yml文件里告诉他要做的事情。

总结

我们这个还很简单,但是效果已经达到了,如果后期还有测试服务器等的发布需求,完全可以通过编辑gitlab-ci.yml来实现。

从netdevops,到云原生,真的感觉纯网管的日子会原来越不好过。。。(程序员制造的)自动化在不停的抢网管的工作,不会代码的网管真的迟早要被淘汰出主流了。。。

使用Gitlab的CI/CD实现简单的自动发布相关推荐

  1. winform 项目 发布后比本地运行慢_前端团队基于 GitLab CI/CD 的自动化构建、发布实践,快来学习吧...

    在公司搭建内部 GitLab 平台后,前端活动项目从 SVN 迁移到 GitLab.本文介绍如何基于 GitLab CI/CD 实现自动化构建及发布. 在从 SVN 迁移到 GitLab 和接入 Gi ...

  2. GitLab通过CI/CD 实现流水线部署(演示主要是通过shell上传SpringBoot项目)

    GitLab通过CI/CD 实现实现流水线部署(演示主要是通过shell上传SpringBoot项目) 环境准备 1.JDK: 2.maven: 3.Git 4.Docker (本次安装没有使用到,仅 ...

  3. 还在用Jenkins?试试Gitlab的CI/CD功能吧,贼带劲!

    前言 Docker和Spring Boot是非常流行的组合,我们将利用GitLab CI的优势,并在应用程序服务器上自动构建,推送和运行Docker镜像. GitLab CI Gitlab CI/CD ...

  4. 【GitLab】693- 用 GitLab 做 CI/CD 是什么感觉,太强了!!

    作者:废物大师兄 来源:www.cnblogs.com/cjsblog/p/12256843.html GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发: Co ...

  5. GItLab入门级CI/CD环境搭建(适用于小微企业或个人)

    相关 什么是CI/CD CI - Continuous Integrarion - 持续集成 现代应用开发的目的是能够让多个开发人员在同时进行同一应用的不同功能.但是这样需要企业在某一天将不同开发人员 ...

  6. Gitlab的CI/CD初尝试

    初衷:今天公司的前端和测试人员吵起来了.原因是测试埋怨前端人员把Bug的状态更改为已解决,结果代码根本没提交,而前端人员埋怨测试测的太频繁了,需要打几个环境的包不方便.又要改东西又要频繁打包费时间.凡 ...

  7. 极狐GitLab的CI/CD中 声明和使用变量的三种方式

    更加有关变量的解析可以阅读该文章 极狐GitLab CI/CD关键词(五):变量 variables 使用预设变量 获取当前任务的变量 test_variable:stage: testscript: ...

  8. git(gitlab)子模块功能在团队协同开发和生产环境中的应用(git,gitlab,TortoiseGit,CI/CD,Jenkins,docker-compose,分支合并,开发环境,测试环境)

    git(gitlab)子模块功能在团队协同开发和生产环境中的应用 目录 git(gitlab)子模块功能在团队协同开发和生产环境中的应用 一.前言 二.先决条件 三.创建gitlab项目(项目管理员操 ...

  9. Jenkins+Gitlab+Nginx+SonarQube+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)

    环境拓扑:  Jenkins -192.168.1.30  Gitlab -192.168.1.31  LB -192.168.1.32  Web1 -192.168.1.33  Web2 -192. ...

  10. CI/CD笔记:《持续交付:发布可靠软件的系统方法》

    <持续交付:发布可靠软件的系统方法> 前言 软件交付的问题 配置管理 持续集成 测试策略的实现 部署流水线解析 构建与部署的脚本化 提交阶段 自动化验收测试 非功能需求的测试 应用程序的部 ...

最新文章

  1. 将Facebook整个托管在AWS上,这可行吗?
  2. RESTful 规范
  3. hihocoder #1103 : Colorful Lecture Note微软苏州校招笔试 1月10日(字符串处理+栈)
  4. 基于android的简单网页_成都APP开发:APP原生和网页开发有什么区别?
  5. python括号匹配问题_支持通配符的括号匹配问题源码+详细流程代码(python)
  6. activemq 安全连接
  7. PHP用于登录的类,基于MySQL
  8. 数字信号 fft c源码_如何制作一个简单的人体动态识别微信小程序(附源码)
  9. Python代码—测试
  10. 华为暂没有推出鸿蒙手机计划;苹果否认 iPhone 辐射超标;Kotlin 1.3.50 发布 | 极客头条...
  11. 北京理工大学c语言课后答案,《北京理工大学C语言教材习题答案》.doc
  12. Windows 7下面安装VMware、BackTrack5(BT5)、minidwep-gtk
  13. SQL Server 2014如何导出数据库
  14. linux桌面图标主题包,推荐 4 款漂亮的 Linux 图标主题
  15. SIGAR - System Information Gatherer And Reporter
  16. wintc下为什么有getchar()但屏幕却还是没有输出?
  17. php解析mpp文件中的多级任务
  18. ~/.profile和/etc/profile的区别
  19. NSDate-日期类nbsp;OC——第七天(1)
  20. Git:分支的工作流程

热门文章

  1. Either类java_通过实例学习Either 树和模式匹配
  2. 【vivado使用】第3篇:BD文件(ip integrator)使用技巧
  3. 【Alpha】第四次Daily Scrum Meeting
  4. raspberrypi python传感器_树莓派4B之火焰传感器模块(python3)
  5. 快来:互联网内容运营人员的文案写作技巧
  6. 获利能力分析实际数据收集流程
  7. (一)关于爬虫之请求
  8. 尚学堂视频笔记四:常用类
  9. [转载]GMT地形数据总结
  10. Axure原型|天猫、京东、拉钩等网站banner原型分享