内容简介:最近在写一些小玩具的时候,一次次的测试,打包,部署流程太麻烦了,正好代码都放在github上,于是就是打算用travis-ci来进行持续集成 解放双手.太简单了 从略由于项目是基于
最近在写一些小玩具的时候,一次次的测试,打包,部署流程太麻烦了,正好代码都放在github上,于是就是打算用travis-ci来进行持续集成 解放双手.
实现思路
-
dockerfile
+docker-compose
来构建 docker 容器 -
travis-ci
+github
来hookrepo
的变动 -
travis-ci
调用dockerfile
打包docker image
并push到dockerhub
-
travis-ci
ssh 登录到目标机器,copydocker-compose
并执行来完成部署
具体实现
注册travis-ci并关联github项目
太简单了 从略
docker容器构建
由于项目是基于 java
+ gradle
来构建的,所以 dockerfile
需要进行多阶段构建
先build出fat-jar来:
#以gradle 为基础构建build环境 FROM gradle:5.2.1-jdk8-alpine AS build-env #copy源码 ADD --chown=gradle . /app WORKDIR /app #运行gradle task进行build RUN gradle assemble --info 复制代码
将jar包copy到jre环境
FROM openjdk:8-jre # 时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo Asia/Shanghai > /etc/timezone \ && dpkg-reconfigure -f noninteractive tzdata # port EXPOSE 9000 #copy COPY --from=build-env /app/build/libs/xxx.jar /app/bin/xxx.jar #运行 CMD ["java", "-jar", "/app/bin/xxx.jar"] 复制代码
这里需要注意的是ADD的时候要授予权限,否则gradle命令执行不了
多阶段构建需要声明--from的上一个阶段,否则copy不到jar包
docker-compose编写
version: '2' services: xxx-service: image: xxx:latest container_name: xxx environment: - JAVA_TOOL_OPTIONS=-Xms128m -Xmx256m ports: - "9000:8080" 复制代码
Travis CI
language: bash services: - docker sudo: required branches: only: - master script: - docker build . -t "xxx:latest" after_success: - docker login --username=username -p="password" dockerhub - docker push dockerhub:latest - chmod 600 id_rsa - scp -o "StrictHostKeyChecking no" -i id_rsa docker-compose.yml ubuntu@ip:/home/ubuntu/docker/ - ssh -o "StrictHostKeyChecking no" -i id_rsa ubuntu@ip "cd /home/ubuntu/docker/;sudo docker-compose -f docker-compose.yml pull;sudo docker-compose -f docker-compose.yml up -d;exit" 复制代码
分解一下:
- 声明language:bash
- services选择docker环境
- script 启动docker image build
- after_success构建完成之后,登录dockerhub,pushimage,登录服务器并cp执行docker-compose.
- ssh 后跟的"命令"会在登录成功后执行
敏感信息这里可以通过 Travis CI
的环境变量来设置,可以避免是公开仓库而泄露
ssh_key可以使用 Travis CI
的加密key来避免泄露
实现效果
完成这些之后,每次在push代码到deploy分支上的时候,就可以愉快的去玩耍了,Travis会自动的进行编译并部署,如果想要查看部署进度,我们可以打开commit点击后面的编译状态图标去查看具体的Travis进度。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 10个 解放双手的 IDEA 插件,少些冤枉代码
- 解放双手——5分钟带你入门Android自动化测试
- 10个 解放双手的 IDEA 插件,能自动生成的绝不手写
- XUI 一个简洁而优雅的Android原生UI框架,解放你的双手
- 解放双手——移动端UI自动化测试框架对比,总有一款适合你!
- 给你一个全自动的屏幕适配方案(基于SW方案)!—— 解放你和UI的双手
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。