最近搞了travis ci的自动部署,小有心得,记录一下。

因为需要发布到自己的服务器中,所以travis ci内置的一票适用于aws等提供商的快捷方法就不适用了,只得采用目前还在实验性质script deploy

先上一段.travis.yml配置:

language: go
go:
- '1.11'
sudo: required               # 管理员权限,用于安装sshpass
script:
- go test -v ./...           # 工程测试
- go build -o testProject .  # 工程构建打包
before_install:
- openssl aes-256-cbc -K $encrypted_58e6f98fc3db_key -iv $encrypted_58e6f98fc3db_iv-in deploy.sh.enc -out deploy.sh -d  # 解密已加密的文件,加密的方法后文详述
before_deploy:
- sudo apt-get install sshpass  # 安装sshpass
deploy:
- provider: script       # 选择实验性质的script deployscript: bash deploy.sh # 需要在发布阶段执行的脚本skip_cleanup: true     # 重要, travis ci默认会在发布阶段清理git管理的文件范围外的所有文件,不写此行会导致脚本找不到编译后的结果on:branch: master       # 当master分支有push事件的时候执行deploy流程

一、脱敏(官方文档)

因为连接到服务器一般会涉及敏感信息,所以必须进行脱敏,travis cli内置了encrypt-file方法。
整体流程为:

  1. 加密文件;
  2. 将加密后的文件上传到Github
  3. travis ci运行的时候解密。

命令则为:
4. gem install travis 安装travis命令行工具,需要ruby(ubuntu18、WSL需使用ruby-dev)
5. travis login --com 登录travis
6. travis encrypt-file deploy.sh --com --add 加密文件, deploy.sh为被加密文件,--com对应登录的--com--add可加密后自动将解密的命令添加到.travis.yml文件中。

二、发布

只需将travis ci生成的release上传到自定义的服务器即可,下面是我使用的脚本deploy.sh:

# 通过sshpass免除scp命令输入密码的过程,通过StrictHostKeyChecking=no免除scp命令信任主机的过程
sshpass -p your_server_password scp -P 22 -o StrictHostKeyChecking=no build.release root@your_server_address:/your/project/module/
# 同上
sshpass -p your_server_password ssh -tt -p 22 -o StrictHostKeyChecking=no root@server 2>&1 << eeooff
cd /your/project/module/
pkill build.release
nohup ./build.release &
exit
eeooff

还有一种发布的方式是通过ssh-keygen生成id_rsaid_rsa.public,将私钥复制到项目中加密,需要注意的是travis encrypt-file命令的限制,多个文件只能通过压缩后再加密,发布前解密再解压的方式来解决,即:

  1. tar cvf example.tar foo bar && travis encrypt-file example.tar --com --add
  2. .travis.ymlbefore_install中添加- tar xvf example.tar

travis ci 自动部署相关推荐

  1. 使用Travis CI自动部署Hexo博客

    自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...

  2. 构建指定仓库_使用Travis CI自动构建和部署你的GitBook

    本文,博主将会介绍利用Travis CI持续集成服务自动化构建和部署GitBook. 首先介绍一下TravisCI,下文摘自维基百科-Travis CI Travis CI是在软件开发领域中的一个在线 ...

  3. docker 部署_GitLab CI 自动部署netcore web api 到Docker

    前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境. .Net & Docker(二)5分钟快速用Docker部 ...

  4. GitLab CI 自动部署netcore web api 到Docker

    前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境. .Net & Docker(二)5分钟快速用Docker部 ...

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

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

  6. 持续集成与持续部署(五)03-TravisCI——Travis CI和Docker的持续集成之所使用的基础组件、dockerfile配置、docker部署脚本

    持续集成与持续部署(五)03-TravisCI--Travis CI和Docker的持续集成之所使用的基础组件.dockerfile配置.docker部署脚本 所使用的基础组件 代码托管在Github ...

  7. travis-ci自动部署_如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用

    travis-ci自动部署 by Robin Bobbitt 罗宾·波比(Robin Bobbitt) 如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用 (How to d ...

  8. travis-ci自动部署_如何使用Travis CI设置高级自动部署

    travis-ci自动部署 by Amir Off 由Amir Off 如何使用Travis CI设置高级自动部署 (How to set up advanced automatic deployme ...

  9. 自动部署 管道 ci cd_自动化测试在CI CD管道中的作用

    自动部署 管道 ci cd 业界广泛采用的软件开发实践:持续集成和持续部署可确保良好地交付产品并经常交付. 常规代码提交需要常规/连续测试,而如果忽略它,则可能导致非弹性基础结构. 如何交付坚固的CI ...

  10. 项目添加到服务器报错,基于github+travis自动部署vue项目到远端服务器

    前期准备 github账号一个 一个vue的项目 一台linux服务器 travis中添加项目 travis是基于github的,所有只有github的账号可以登录travis,开发者必须有一个git ...

最新文章

  1. 科普云计算知识,迎接云计算大会
  2. Swagger 入门使用
  3. java使用ajax异步刷新_Jquery的Ajax实现异步刷新
  4. 一个可行的绑定下拉列表的方法(bind dropdownlist)
  5. mac android studio 打不开adb,Android-Macbook ADB无法打开
  6. js正则匹配闭合标签_我从Vue源码中学到的一些JS编程技巧
  7. 太赞了!阿里巴巴AI每天服务全球10亿人
  8. 【linux指令】dialog实现终端下的GUI-1
  9. 简易OA漫谈之工作流设计(五,直接上级)
  10. 说说你对Jdk并发包中的CAS实现的了解?
  11. 华为鸿蒙是物联网操作系统;字节跳动的飞聊被 App Store 下架;FFmpeg 作者编写 JS 引擎 | 极客头条...
  12. linux加速度传感器校准,加速度传感器校准方法及装置与流程
  13. 【Beam Search】seq2seq中的beam search算法过程
  14. Base64编码工具类
  15. python小于_删除python中小于某个值的行
  16. 浏览器全屏相关常用代码
  17. wep加密方式是什么_什么是WEP(有线等效保密)?
  18. 青海西藏新疆地区有名的调查研究咨询公司
  19. [附源码]Python计算机毕业设计餐厅订餐系统Django(程序+LW)
  20. 警校计算机专业代码,最全!全国50所警校的警号,你最喜欢哪一个?

热门文章

  1. 注册表编辑器(regedit)
  2. CTFshou wed文件上传
  3. c 语言中析构函数,详解C++编程中的析构函数
  4. Git学习8 Git分支操作
  5. 搜题公众号题库对接教程
  6. ubuntu 安装osx 主题 转自linux公社
  7. word删除括号里内容
  8. word括号显示问题
  9. 计算机图形学:DDA(数值微分)画线法
  10. matlab fft能量守恒吗,功能关系 能量守恒定律