内容简介:最近在写一些小玩具的时候,一次次的测试,打包,部署流程太麻烦了,正好代码都放在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的双手
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00
As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!