travis ci 自动部署
最近搞了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
方法。
整体流程为:
二、发布
只需将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_rsa
、id_rsa.public
,将私钥复制到项目中加密,需要注意的是travis encrypt-file
命令的限制,多个文件只能通过压缩后再加密,发布前解密再解压的方式来解决,即:
tar cvf example.tar foo bar && travis encrypt-file example.tar --com --add
- 在
.travis.yml
的before_install
中添加- tar xvf example.tar
travis ci 自动部署相关推荐
- 使用Travis CI自动部署Hexo博客
自从使用GitHub Pages和Hexo来发布博客之后,不得不说方便了许多,只需要几个简单的命令博客就发布了.但在不断的使用中发现每次的发布操作也挺耗时的. 我一般的操作是将平时整理好的md文件放到 ...
- 构建指定仓库_使用Travis CI自动构建和部署你的GitBook
本文,博主将会介绍利用Travis CI持续集成服务自动化构建和部署GitBook. 首先介绍一下TravisCI,下文摘自维基百科-Travis CI Travis CI是在软件开发领域中的一个在线 ...
- docker 部署_GitLab CI 自动部署netcore web api 到Docker
前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境. .Net & Docker(二)5分钟快速用Docker部 ...
- GitLab CI 自动部署netcore web api 到Docker
前端篇文章中,我们已经成功的将asp.net core webapi在Docker容器中运行,并且部署了一套自己的GitLab环境. .Net & Docker(二)5分钟快速用Docker部 ...
- 【请收藏】自动化构建部署之Travis CI使用(GitHub/Travis CI/Vue)
文章目录 CI/CD 工具 Travis CI 使用 1. 注册 2. 新建Github仓库 3. 创建vue项目 4. 配置Travis CI 5. 发布到GitHub pages Travis C ...
- 持续集成与持续部署(五)03-TravisCI——Travis CI和Docker的持续集成之所使用的基础组件、dockerfile配置、docker部署脚本
持续集成与持续部署(五)03-TravisCI--Travis CI和Docker的持续集成之所使用的基础组件.dockerfile配置.docker部署脚本 所使用的基础组件 代码托管在Github ...
- travis-ci自动部署_如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用
travis-ci自动部署 by Robin Bobbitt 罗宾·波比(Robin Bobbitt) 如何使用Travis CI部署(几乎)零恐惧的Cloud Foundry应用 (How to d ...
- travis-ci自动部署_如何使用Travis CI设置高级自动部署
travis-ci自动部署 by Amir Off 由Amir Off 如何使用Travis CI设置高级自动部署 (How to set up advanced automatic deployme ...
- 自动部署 管道 ci cd_自动化测试在CI CD管道中的作用
自动部署 管道 ci cd 业界广泛采用的软件开发实践:持续集成和持续部署可确保良好地交付产品并经常交付. 常规代码提交需要常规/连续测试,而如果忽略它,则可能导致非弹性基础结构. 如何交付坚固的CI ...
- 项目添加到服务器报错,基于github+travis自动部署vue项目到远端服务器
前期准备 github账号一个 一个vue的项目 一台linux服务器 travis中添加项目 travis是基于github的,所有只有github的账号可以登录travis,开发者必须有一个git ...
最新文章
- 科普云计算知识,迎接云计算大会
- Swagger 入门使用
- java使用ajax异步刷新_Jquery的Ajax实现异步刷新
- 一个可行的绑定下拉列表的方法(bind dropdownlist)
- mac android studio 打不开adb,Android-Macbook ADB无法打开
- js正则匹配闭合标签_我从Vue源码中学到的一些JS编程技巧
- 太赞了!阿里巴巴AI每天服务全球10亿人
- 【linux指令】dialog实现终端下的GUI-1
- 简易OA漫谈之工作流设计(五,直接上级)
- 说说你对Jdk并发包中的CAS实现的了解?
- 华为鸿蒙是物联网操作系统;字节跳动的飞聊被 App Store 下架;FFmpeg 作者编写 JS 引擎 | 极客头条...
- linux加速度传感器校准,加速度传感器校准方法及装置与流程
- 【Beam Search】seq2seq中的beam search算法过程
- Base64编码工具类
- python小于_删除python中小于某个值的行
- 浏览器全屏相关常用代码
- wep加密方式是什么_什么是WEP(有线等效保密)?
- 青海西藏新疆地区有名的调查研究咨询公司
- [附源码]Python计算机毕业设计餐厅订餐系统Django(程序+LW)
- 警校计算机专业代码,最全!全国50所警校的警号,你最喜欢哪一个?