CI/CD 工具介绍


从上图对比可以看到 各自有优缺点,Jenkins有点是免费且跨平台,而Travis CICircle CI是收费的,且不支持windows,但会为开源的项目免费提供一些服务,私有的就需要收费了。

Circle CI使用

官网:https://circleci.com/

1. 注册

点击右上角Sign Up按钮,点击Sign up with Github

进入授权界面:

点击Authorize circleci按钮,然后需要输入密码:

输入密码成功后,点选一下自己的组织即可:

进入界面我们可以看到我们仓库里的项目:

2. 创建Github仓库

注意这里要选择Public ,私有项目在CI/CD需要花钱的哦

3. 创建.yml配置文件

首先把github的项目clone到本地,然后在根目录创建.circleci文件夹,在文件夹里创建config.yml文件,文件内容:

version: 2
jobs:build:docker:- image: circleci/node:10steps:- run: echo "A first hello"- run: npm -v

然后提交到github远程仓库:

git add .
git commit -m "add circle config"
git push origin master

查看下这里已经推送成功了:

4. 设置Circle CI

circle ci后台Projects里已经多出了一个circle-demo项目:

点击Set Up Project 来设置,第一次会询问是否有config.yml配置文件,而且给出了一个模板,因为我们已经在根目录配置了,所以直接Build就行,以下是成功编译的结果:

点击workflow可以看到详细信息:

可以看到构建仅花了4s钟的时间,速度还是很快的,点击下面的build可以看到每一步输出的结果:


是不是很兴奋呢?

5. 配置生产项目(Vue项目)

先创建一个vue项目,然后合并到之前创建的circle-demo目录:

因涉及到checkout代码,所以先要设置ssh密钥,点击Project Settings

点击左侧 SSH Keys ,点击Authorize with GitHub

然后授权:

再回来点击Add User Key

点击后创建了新的SSH Key后面会用到

创建这个key的作用是可以直接访问Github私有仓库,防止没有权限读写


添加完成后,我们来编辑config.yml文件:

version: 2
jobs:build:docker:- image: circleci/node:10branches:only:- mastersteps:- add_ssh_keys:fingerprints:- "0c:27:f4:42:c6:ab:3e:cf:3c:09:f3:d1:2c:62:92:6b"- checkout- run: echo "A first hello"- run: npm -v- run:name: Installcommand: yarn install- run:name: Buildcommand: yarn build

文件里的fingerprints就是上一步设置的User SSH Key

然后把所有代码提交到远程仓库,可以看到此时已经自动触发了Circle CI的构建工作:


整个过程花了44s的时间,看下最后一步Build过程:

嗯~ 是不是有内味了~

6. 缓存依赖

Circle CI提供了缓存功能,因为每次构建都会安装一些插件,node_modules文件夹里文件非常多,每次安装时间很长,如果缓存下来构建就非常快了。

- restore_cache:keys:- dependencies_circle_demo
- run:name: Installcommand: yarn install
- save_cache:paths:- node_moduleskey: dependencies_circle_demo

7. 发布到Github pages

在项目根目录新建一个文件夹scripts,新建deploy.sh

#!/bin/shset -e# 打印当前的工作路径
pwd
remote=$(git config remote.origin.url)echo 'remote is: '$remote# 新建一个发布的目录
mkdir gh-pages-branch
cd gh-pages-branch
# 创建的一个新的仓库
# 设置发布的用户名与邮箱
git config --global user.email "$GH_EMAIL" >/dev/null 2>&1
git config --global user.name "$GH_NAME" >/dev/null 2>&1
git init
git remote add --fetch origin "$remote"echo 'email is: '$GH_EMAIL
echo 'name is: '$GH_NAME
echo 'sitesource is: '$siteSource# 切换gh-pages分支
if git rev-parse --verify origin/gh-pages >/dev/null 2>&1; thengit checkout gh-pages# 删掉旧的内容git rm -rf .
else git checkout --orphan gh-pages
fi# 把构建好的文件目录给拷贝进来
cp -a "../${siteSource}/." .ls -la# 把所有的文件添加到git
git add -A
git commit --allow-empty -m "Deploy to GitHub pages [ci skip]"
git push --force --quiet origin gh-pages# 资源回收,删除临时分支与目录
cd ..
rm -rf gh-pages-branchecho "Finished Deployment!"

修改config.yml配置文件:

version: 2
jobs:build:docker:- image: circleci/node:10branches:only:- mastersteps:- add_ssh_keys:fingerprints:- "0c:27:f4:42:c6:ab:3e:cf:3c:09:f3:d1:2c:62:92:6b"- checkout- restore_cache:keys:- dependencies_circle_demo- run:name: Installcommand: yarn install- save_cache:paths:- node_moduleskey: dependencies_circle_demo- run:name: Buildcommand: yarn build- run:name: Prepare shell commandscommand: chmod +x scripts/deploy.sh- run:name: Run Deploy to Github pagescommand: ./scripts/deploy.sh

添加circle ci环境变量,同样在项目设置里:

  • GH_EMAIL 就是你的邮箱
  • GH_NAME 就是你的用户名
  • siteSource 是 dist (打包的目录)

然后提交push到GitHub,自动触发构建任务:

我们来看下结果:

好,发布完成后,我们来找一下发布的地址在哪,首先去GitHub项目中,点击Settings

往下滚可以看到GitHub Pages 里面会有部署的地址:

点开这个链接,额。。。貌似是空白的,原来控制台报错了404

有经验的老手一猜就知道是vue打包构建需要配置下,就是publicPath这个选项,可以参考下面介绍:

vue cli官网介绍:https://cli.vuejs.org/zh/config/#vue-config-js
也可以看这篇:vue.config.js 配置参考


在项目根目录新建vue.config.js配置文件:

module.exports = {publicPath: process.env.NODE_ENV === 'production' ? '/circle-demo': '/'
}

因为GitHub项目名为circle-demoGitHub page生成的路径里带有circle-demo,所以这里需要修改publicPath在生产环境为circle-demo,最终提交代码,push到GitHub再重新构建,刷新页面,就OK啦:

Circle CI总结

  • GitHub账号注册,授权
  • 新建项目添加.circleci/config.yml文件
  • 配置脚本任务,流程:环境->构建->(缓存)->发布

【请收藏】自动化构建部署之Circle CI使用(GitHub/CircleCI/Vue)相关推荐

  1. 【请收藏】自动化构建部署之Travis CI使用(GitHub/Travis CI/Vue)

    文章目录 CI/CD 工具 Travis CI 使用 1. 注册 2. 新建Github仓库 3. 创建vue项目 4. 配置Travis CI 5. 发布到GitHub pages Travis C ...

  2. 自动化构建部署(CICD)

    项目管理之自动化构建部署(CICD) 理解敏捷项目管理 掌握ones使用 掌握GitLab使用 掌握Jenkins自动化项目构建与部署 1. 研发管理概述 1.1.概念 ​研发管理就是在研发体系结构设 ...

  3. 项目管理之自动化构建部署(CICD)

    项目管理之自动化构建部署(CICD) 1. 研发管理概述 [目标] 理解敏捷项目管理 [路径] 1:了解研发管理概念 2:了解敏捷开发 3:了解DevOps [讲解] 1.1. 研发管理概念 ​ 研发 ...

  4. GitHub+Vue自动化构建部署

    GitHub+Vue自动化构建部署 GitHub+Vue自动化构建 懒是第一生产力,写Vue都知道,写完了想在服务器上跑,就得npm run build,然后将生成的dist目录下的文件放到web目录 ...

  5. 云效搭建流水线实现自动化构建部署

    前言 云效,是阿里云提供的一款服务类产品,能够多人协作开发集成.多种编程语言构建打包和分布式集群部署发布等服务.轻松搭建从代码提交.集成.构建到测试环境.预发环境.线上环境部署发布验证的持续交付流水线 ...

  6. Docker安装Jenkins实现自动化构建部署到Tomcat

    安装Docker 直接装一个docker-toolbox就好了,下载最下面的最新版 http://mirrors.aliyun.com/docker-toolbox/windows/docker-to ...

  7. 自动化构建部署之Jenkins安装【Docker容器】

    文章目录 1. 在Docker中安装Jenkins 2. 配置清华加速源 3. 离线安装 4. 权限管理 前面几篇文章分别介绍了Travis CI.Circle CI,这次开始整Jenkins,它是开 ...

  8. jenkins和docker实现自动化构建部署

    应用场景 程序员开发应用,开发后需要提交gitlub,然后从gitlab拉取代码,进行构建,发布到tomcat中然后发布看呈现效果,这样的工作是频繁反复的在进行的,浪费了程序员的大量时间,那么能不能把 ...

  9. vue自动化部署linux,GitHub+Vue自动化构建部署

    GitHub+Vue自动化构建 懒是第一生产力,写Vue都知道,写完了想在服务器上跑,就得npm run build,然后将生成的dist目录下的文件放到web目录下,但是每次都这样搞好像很麻烦,然后 ...

最新文章

  1. 用yum查询想安装的软件
  2. hibernate 三种查询方式源码跟踪及总结
  3. java工程mvn引用jar_maven 项目加载本地JAR
  4. wireshark网卡权限_网络分析系列之六_Wireshark安装
  5. 使用Xerte创建简单的在线学习资料的指南
  6. 大家不要催!雷军的螺丝刀已经准备好了...
  7. python是什么类型的语言-python到底是什么类型的语言
  8. 读取nacos_使用nacos配置多环境切换
  9. 卡方分箱(chi-square)1
  10. 地理探测器的学习与研究初探
  11. 一次简单的软件系统培训计划安排
  12. Word控件Spire.Doc 转换教程(十六):在 C# 中将 Word 转换为 PDF/A
  13. 网络爬虫中Json数据的解析[以时光网为例]
  14. 易企秀手机html5场景源码,仿易企秀V15.1手机网页DIY制作工具完整版开源版源码修复采......
  15. Python3入门教程::Excel 基础操作(下)
  16. lisp 练习取得对象属性
  17. MMGSDI启动流程
  18. JAVA渣渣感悟——三目运算符(三元运算符)的注意事项
  19. JBuilderX使用Ant读书笔记
  20. [学习笔记]快速沃尔什变换 (FWT)

热门文章

  1. 阿里面试_技术问题和经验总结
  2. 今天maven install时碰到的两个问题(堆溢出和编译错误)
  3. DEV全选多选小技巧
  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增企业通(内部简易聊天工具)...
  5. 价值100大洋的简体中文汉化补丁下载
  6. 海奥华预言--第一章 神秘邀请
  7. 只靠可视化大屏,做不了数字化,数据总监总结3点,你做到了几个
  8. 掌握这7点,不懂代码也能做出酷炫可视化大屏!
  9. 有了报表FineReport,为什么还要上FineBI?
  10. zhajinhua2012邮件等网络服务的广泛应用