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项目自动化构建相关推荐

  1. 【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. ...

  2. 怎么用python编写个apk_【android】如何利用python做Android项目自动化构建,并一键实现构建结果发送到钉钉通知以及通过二维码下载apk或者其他处理等功能...

    今天我们来谈一谈用python做Android项目自动化构建的过程.我们知道在常规的Android开发过程中,开发人员打包的时候需要在Android Studio当中进行,或者通过gradle命令,但 ...

  3. Linux项目自动化构建工具 make/Makefile

    在我们日常写代码中,一个工程的源文件不计其数, 按照类型.功能.模块等分别放在若干个目录中,这时候我们就可以利用makefile来指定哪些文件先编译,哪些后编译,以及更复杂的操作.我们只需要在make ...

  4. 十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南

    上面是一个开发中的经典问题场景,发生的原因通常是:开发者工作机上的某些依赖项没有安装在测试或者客户环境中,导致程序无法运行或者报错. 如何有效地避免这个尴尬的场景呢?那就需要一个持续的.可复用的自动构 ...

  5. python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南

    上面是一个开发中的经典问题场景,发生的原因通常是:开发者工作机上的某些依赖项没有安装在测试或者客户环境中,导致程序无法运行或者报错. 如何有效地避免这个尴尬的场景呢?那就需要一个持续的.可复用的自动构 ...

  6. Linux系统编程7:入门篇之Linux项目自动化构建工具-Make/Makefile的超强使用指南

    文章目录 (1)前言 (2)依赖关系和依赖方法 (3)单文件Makefile (4)多文件Makefile (5)总结 (1)前言 对于一个大型项目,可能会涉及到很多文件,例如头文件,源文件等等.在V ...

  7. Linux | 项目自动化构建工具 - make/Makefile

    make / Makefile 一.前言 二.make/Makefile背景介绍 1.Makefile是干什么的? 2.make又是什么? 三.demo实现[见见猪跑

  8. Linux项目自动化构建工具-make/Makefile的打字练习

    工欲善其事,必先利其器--首先我们需要有打字练习的工具 ,这里我推荐的是 金山打字通,下载链接为

  9. linux 下项目自动化构建工具makefile详解

    什么是makefile 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚 ...

最新文章

  1. 82年 AI程序员征婚启示火了!年薪百万,女生神回复
  2. Python有趣现象(不定时更新)
  3. Android企业级程序完全退出的解决方案
  4. hibernate 各种主键生成策略(转)
  5. 五百兆电信宽带玩穿越火线,电信区,延时卡70到80怎么回事,换的千兆猫和路由器,线都是六类?
  6. 微信电话本的未来在农村
  7. python技术分享_分享几个python的使用技巧
  8. 轻松三步教你配置oracle,Oracle Net Configuration Assistant 配置步骤简明教程
  9. 移动端最小字体限制测试
  10. 探索式测试实践之路(国际大师James Bach题词推荐之探索式测试唯一本土著作)
  11. 单变量分析、组合变量分析
  12. 如何修改android模拟器上的IMEI、IMSI、SIM card serial number
  13. Java、JSP教务排课系统
  14. 别了,Easy微博!
  15. 简单理解数据库游标cursor
  16. 怎么查二手苹果手机价格
  17. 如何做好一名合格的项目组长
  18. 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计。 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
  19. 【数字华容道】一、核心
  20. 鸢尾花数据集的线性多分类

热门文章

  1. android会员等级进度条,利用jQuery实现会员等级消费进度条代码
  2. [0x7FFE1E17E050] ANOMALY: meaningless REX prefix used
  3. slq 把多行 用分隔符分割,变成一行
  4. C语言编程求三位数各位之和,C趣味程序(二)(04)求三位阶乘和数
  5. 自定义多选QComboBox
  6. Bluemix 修改时区
  7. VTK和ParaView中引入了显式结构化网格表达地质网格
  8. 00后深漂程序员:“这一年我在CSDN收获了4个W”
  9. magento---EAV模型----总结!!
  10. MindSpore编译时报错