Bamboo项目自动化构建
Bamboo项目自动化构建
本文说明如何使用Bamboo实现Java项目的自动化构建。实现的功能是:能够轮询检测所连接的代码仓库,当检测到源代码更新时,使用Gradle自动进行项目构建,构建完成后可以查看构建日志,构建生成相关文件保存在Bamboo服务器上。
为实现这一功能完成了以下工作:
1、配置服务器Bamboo环境
2、安装Docker
3、构建所需要的Docker镜像
4、准备代码仓库
5、创建Bamboo项目并进行配置
在完成上述工作后,对自动化构建工作进行演示,查看构建结果,并在服务器上查找构建生成的相关文件。
1 配置服务器Bamboo环境
本节说明如何在一台服务器(Virtualbox Ubuntu20.04)上搭建Bamboo环境,需要安装并配置JDK8和Bamboo,配置完成后可以实现从浏览器访问Bamboo。
1.1 安装配置JDK8环境
本小节说明如何安装配置JDK8环境,需要下载源码压缩包,解压服务器上,在进行环境变量配置,最后进行测试,确认安装配置成功。
jdk8下载官网:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
下载好的安装包解压到/usr/local/software/java目录下
修改/etc/profile文件,添加一下内容
export JAVA_HOME=/usr/local/software/java/jdk1.8.0_301
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
测试java环境
1.2 安装配置Bamboo环境
本小节说明如何在服务器上安装Bamboo并进行配置。
参考官网安装教程:https://confluence.atlassian.com/bamboo0610/installing-bamboo-on-linux-980468671.html
首先需要下载源码压缩包,解压到服务器后,再创建一个bamboo-home目录
修改/usr/local/software/atlassian-bamboo-8.0.0/atlassian-bamboo/WEB-INF/classes/bamboo-init.properties,添加如下一行
bamboo.home=/usr/local/software/bamboo-home
进入安装目录执行bin目录中的启动脚本
cd /usr/local/software/atlassian-bamboo-8.0.0
./bin/start-bamboo.sh
启动成功后便可通过http:服务器ip:8085进行访问
初次访问需要进行一些配置,参看https://confluence.atlassian.com/bamboo0610/running-the-setup-wizard-980468696.html,按照步骤进行配置即可。
2 安装Docker
本节说明在服务器上安装Docker。
官方安装教程:
- Ubuntu:https://docs.docker.com/engine/install/ubuntu/
- CentOS:https://docs.docker.com/engine/install/centos/
根据教程进行安装即可。
如需要修改docker镜像下载地址,修改/etc/docker/daemon.json即可
docker安装测试
安装成功
3 构建Docker镜像
本节说明项目构建需要的环境,通过Dockerfile在原始ubuntu镜像的基础上配置这些环境,编译一个新的镜像,并将其发布到国内镜像仓库,以供创建Bamboo项目时使用。
1.1 项目需要的环境
本小节说明构建项目需要的软件环境:JDK11和Gradle
下载JDK11源码包和Gradle源码包
JDK11源码包下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
Gradle源码包下载地址:https://gradle.org/releases/
1.2 编写Dockerfile
本小节根据上面项目软件环境需要编写Dockerfile文件
FROM ubuntu # 基于原始ubuntu构建
MAINTAINER dctwan<dctwan@126.com># 将jdk11和gradle源码安装包添加到/usr/local/software目录下
ADD jdk-11.0.12_linux-x64_bin.tar.gz /usr/local/software # tar.gz包可自动解压
ADD gradle-7.1.1-bin.zip /usr/local/software# Dockerfile编译时执行的命令
RUN apt-get update # 更新ubuntu软件源
RUN apt-get -y install vim # 安装vim
RUN apt-get -y install unzip # 安装unzip用于解压gradle安装包
# 将gradle安装包解压到/usr/local/software/目录下
RUN unzip /usr/local/software/gradle-7.1.1-bin.zip -d /usr/local/software/# 配置java和gradle的环境变量
ENV JAVA_HOME /usr/local/software/jdk-11.0.12
ENV GRADLE_HOME=/usr/local/software/gradle-7.1.1
ENV PATH $PATH:$JAVA_HOME/bin:$GRADLE_HOME/bin
1.3 编译镜像
本小节说明如何根据Dockerfile文件编译出docker镜像,并用生成的镜像测试项目需要的JDK11和Gradle环境
将JDK11和Gradle源码包和Dockerfile文件置于同一目录下,然后运行以下命令,进行编译
docker build -t myubuntu .
编译完成后可通过
docker images
查看已经编译生成的镜像
启动一个容器,测试java和gradle环境
docker run -it myubuntu
1.4 上传到镜像仓库
本小节说明将生成的镜像上传到阿里云镜像仓库
准备阿里云镜像仓库
# 登录
docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com
# 给镜像打标签
docker tag 6eda9b9d9817 registry.cn-hangzhou.aliyuncs.com/dctwan/ubuntu_test:4.0
# push到镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/dctwan/ubuntu_test:4.0
4 准备代码仓库
本小节说明如何将给定项目上传到Bitbucket代码仓库
首先需要创建一个Repository
然后进入到项目目录中使用git命令
git init
git add .
git commit -m 'Inital commit'
git remote add origin https://code.management-systems.net/scm/~dechang.duan/testcode.git
git push -u origin master
# 接下来输入Bitbucket用户名和密码将源代码push到代码仓库
5 创建并配置Bamboo项目
本节说明如何创建一个Bamboo项目,包括创建项目、创建plan与配置、连接代码仓库、配置job、task创建与配置
5.1 创建Bamboo项目
点击Bamboo页面导航栏中Create,选中创建项目,填写相关信息,点击Save即可创建一个项目
5.2 创建plan并进行配置
点击Create plan,进入创建plan的页面,填写有关信息,点击Create即可创建一个plan,接下来进行连接代码仓库配置
连接到刚刚创建的代码仓库,使用用户名和密码进行授权,点击连接测试,显示成功连接,点击Save and continue
5.3 配置job
Docker images选用刚刚构建的镜像,当Bamboo启动构建时,自动从镜像仓库拉取镜像,并启动一个容器,在其中进行项目构建操作
镜像仓库地址:registry.cn-hangzhou.aliyuncs.com/dctwan/ubuntu_test:4.0
添加task,task为Bamboo在服务器上启动一个容器后在上面需要进行的任务
首先需要添加Source Code Checkout任务,接下来添加一个Scripts任务,说明要执行gradle构建命令
构建命令如下:
chmod +x gradlew
./gradlew bootjar
6 自动化构建演示
本节演示自动化构建结果
手动构建直接点击Run plan即可
可设置Trigger,Bamboo每隔一定时长便会轮询代码仓库,检测到源代码更新后会自动触发构建,自动触发构建结果如下,图示中
changes by 段德昌 <i-dechang.duan@formal-tech.com>
即为触发本次构建的用户
可在commit中查看触发本次构建的源代码commit
7 项目构建文件存放位置
本节说明Bamboo启动容器进行构建,构建生成的相关文件存的位置
Bamboo启动容器时使用了数据卷挂载,具体挂载文件目录可在logs中查看
通过数据卷挂载即可实现容器中数据的持久化,即:容器在运行过程中产生的数据会被保存到服务器上,即便容器运行后被销毁,数据仍然存在。
进入到指定目录即可查看到生成的项目jar包
Bamboo项目自动化构建相关推荐
- 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile
目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...
- 怎么用python编写个apk_【android】如何利用python做Android项目自动化构建,并一键实现构建结果发送到钉钉通知以及通过二维码下载apk或者其他处理等功能...
今天我们来谈一谈用python做Android项目自动化构建的过程.我们知道在常规的Android开发过程中,开发人员打包的时候需要在Android Studio当中进行,或者通过gradle命令,但 ...
- Linux项目自动化构建工具 make/Makefile
在我们日常写代码中,一个工程的源文件不计其数, 按照类型.功能.模块等分别放在若干个目录中,这时候我们就可以利用makefile来指定哪些文件先编译,哪些后编译,以及更复杂的操作.我们只需要在make ...
- 十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南
上面是一个开发中的经典问题场景,发生的原因通常是:开发者工作机上的某些依赖项没有安装在测试或者客户环境中,导致程序无法运行或者报错. 如何有效地避免这个尴尬的场景呢?那就需要一个持续的.可复用的自动构 ...
- python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南
上面是一个开发中的经典问题场景,发生的原因通常是:开发者工作机上的某些依赖项没有安装在测试或者客户环境中,导致程序无法运行或者报错. 如何有效地避免这个尴尬的场景呢?那就需要一个持续的.可复用的自动构 ...
- Linux系统编程7:入门篇之Linux项目自动化构建工具-Make/Makefile的超强使用指南
文章目录 (1)前言 (2)依赖关系和依赖方法 (3)单文件Makefile (4)多文件Makefile (5)总结 (1)前言 对于一个大型项目,可能会涉及到很多文件,例如头文件,源文件等等.在V ...
- Linux | 项目自动化构建工具 - make/Makefile
make / Makefile 一.前言 二.make/Makefile背景介绍 1.Makefile是干什么的? 2.make又是什么? 三.demo实现[见见猪跑
- Linux项目自动化构建工具-make/Makefile的打字练习
工欲善其事,必先利其器--首先我们需要有打字练习的工具 ,这里我推荐的是 金山打字通,下载链接为
- linux 下项目自动化构建工具makefile详解
什么是makefile 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚 ...
最新文章
- 82年 AI程序员征婚启示火了!年薪百万,女生神回复
- Python有趣现象(不定时更新)
- Android企业级程序完全退出的解决方案
- hibernate 各种主键生成策略(转)
- 五百兆电信宽带玩穿越火线,电信区,延时卡70到80怎么回事,换的千兆猫和路由器,线都是六类?
- 微信电话本的未来在农村
- python技术分享_分享几个python的使用技巧
- 轻松三步教你配置oracle,Oracle Net Configuration Assistant 配置步骤简明教程
- 移动端最小字体限制测试
- 探索式测试实践之路(国际大师James Bach题词推荐之探索式测试唯一本土著作)
- 单变量分析、组合变量分析
- 如何修改android模拟器上的IMEI、IMSI、SIM card serial number
- Java、JSP教务排课系统
- 别了,Easy微博!
- 简单理解数据库游标cursor
- 怎么查二手苹果手机价格
- 如何做好一名合格的项目组长
- 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计。 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
- 【数字华容道】一、核心
- 鸢尾花数据集的线性多分类
热门文章
- android会员等级进度条,利用jQuery实现会员等级消费进度条代码
- [0x7FFE1E17E050] ANOMALY: meaningless REX prefix used
- slq 把多行 用分隔符分割,变成一行
- C语言编程求三位数各位之和,C趣味程序(二)(04)求三位阶乘和数
- 自定义多选QComboBox
- Bluemix 修改时区
- VTK和ParaView中引入了显式结构化网格表达地质网格
- 00后深漂程序员:“这一年我在CSDN收获了4个W”
- magento---EAV模型----总结!!
- MindSpore编译时报错