保姆级教程:在Ubuntu 20.04上用Bamboo 8.0 + Docker搞定Java项目CI/CD
从零构建基于Bamboo和Docker的Java项目CI/CD流水线实战指南在当今快节奏的软件开发环境中持续集成和持续交付(CI/CD)已成为现代DevOps实践的核心。对于Java开发者而言如何快速搭建一套稳定、高效的自动化构建与部署流水线是提升团队交付效率的关键。本文将手把手带你完成从Ubuntu服务器环境准备到Bamboo与Docker集成最终实现Java项目自动化构建的全过程。1. 环境准备与基础配置1.1 Ubuntu 20.04服务器初始化在开始安装Bamboo之前我们需要确保服务器环境满足基本要求。以下是一组推荐的初始化命令# 更新系统包索引 sudo apt-get update sudo apt-get upgrade -y # 安装常用工具 sudo apt-get install -y curl wget unzip zip vim net-tools # 创建软件安装目录 sudo mkdir -p /usr/local/software/{java,bamboo}对于生产环境建议配置swap分区以提高系统稳定性# 检查现有swap free -h # 创建4GB swap文件 sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab1.2 JDK环境配置Bamboo 8.0需要JDK 8或更高版本支持。以下是安装OpenJDK 11的步骤# 安装OpenJDK 11 sudo apt-get install -y openjdk-11-jdk # 验证安装 java -version javac -version # 设置JAVA_HOME环境变量 echo export JAVA_HOME/usr/lib/jvm/java-11-openjdk-amd64 | sudo tee -a /etc/profile echo export PATH$JAVA_HOME/bin:$PATH | sudo tee -a /etc/profile source /etc/profile2. Bamboo 8.0安装与配置2.1 下载与安装Bamboo从Atlassian官网获取Bamboo 8.0的安装包# 下载Bamboo wget https://www.atlassian.com/software/bamboo/downloads/binary/atlassian-bamboo-8.0.0.tar.gz # 解压到安装目录 sudo tar -zxvf atlassian-bamboo-8.0.0.tar.gz -C /usr/local/software/bamboo/ # 设置Bamboo主目录 echo bamboo.home/usr/local/software/bamboo-home | sudo tee -a /usr/local/software/bamboo/atlassian-bamboo/WEB-INF/classes/bamboo-init.properties2.2 启动与初始化配置启动Bamboo服务cd /usr/local/software/bamboo/atlassian-bamboo-8.0.0 ./bin/start-bamboo.sh访问Bamboo控制台默认端口8085完成初始配置选择Express快速安装模式设置管理员账户信息配置基础URL建议使用域名而非IP完成许可证配置可先选择试用提示生产环境建议配置反向代理如Nginx并启用HTTPS同时考虑使用MySQL等外部数据库替代默认的嵌入式数据库。3. Docker环境搭建与优化3.1 Docker引擎安装# 安装依赖 sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker仓库 sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable # 安装Docker CE sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 验证安装 sudo docker run hello-world3.2 Docker配置优化调整Docker守护进程配置以提高性能# 创建或修改daemon.json sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://registry.docker-cn.com], log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 }, storage-driver: overlay2 } EOF # 重启Docker服务 sudo systemctl restart docker配置Docker用户组避免频繁使用sudosudo groupadd docker sudo usermod -aG docker $USER newgrp docker4. 构建Java项目专用Docker镜像4.1 准备基础环境创建项目目录结构mkdir -p ~/java-project-docker/{jdk,gradle} cd ~/java-project-docker下载必要的软件包JDK 11: Oracle官网Gradle: Gradle官网4.2 编写Dockerfile# Dockerfile FROM ubuntu:20.04 # 设置时区 ENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone # 安装基础工具 RUN apt-get update \ apt-get install -y --no-install-recommends \ curl \ unzip \ zip \ vim \ git \ rm -rf /var/lib/apt/lists/* # 添加JDK COPY jdk/jdk-11.0.12_linux-x64_bin.tar.gz /tmp/ RUN tar -zxvf /tmp/jdk-11.0.12_linux-x64_bin.tar.gz -C /opt/ \ rm /tmp/jdk-11.0.12_linux-x64_bin.tar.gz # 添加Gradle COPY gradle/gradle-7.1.1-bin.zip /tmp/ RUN unzip /tmp/gradle-7.1.1-bin.zip -d /opt/ \ rm /tmp/gradle-7.1.1-bin.zip # 设置环境变量 ENV JAVA_HOME/opt/jdk-11.0.12 ENV GRADLE_HOME/opt/gradle-7.1.1 ENV PATH$PATH:$JAVA_HOME/bin:$GRADLE_HOME/bin # 创建工作目录 RUN mkdir /workspace WORKDIR /workspace # 验证安装 RUN java -version gradle --version4.3 构建与测试镜像docker build -t java-gradle-builder:1.0 . # 测试镜像 docker run -it --rm java-gradle-builder:1.0 bash5. Bamboo项目配置与自动化构建5.1 创建Bamboo项目登录Bamboo控制台导航至Create Create project填写项目信息项目名称Java CI/CD Pipeline项目键JAVACI项目描述Java项目自动化构建与部署流水线5.2 配置代码仓库连接创建新的PlanPlan名称Build and DeployPlan描述自动构建Java项目并生成Docker镜像配置仓库连接选择Git/Bitbucket输入仓库URL配置认证信息建议使用SSH密钥5.3 设置构建任务在Job配置中添加以下关键TaskSource Code Checkout自动拉取最新代码Docker Task使用我们构建的java-gradle-builder镜像Script Task执行构建命令# 构建脚本示例 chmod x gradlew ./gradlew clean buildArtifact Download配置构建产物收集Docker Build构建应用镜像可选5.4 配置触发器设置自动构建触发器轮询间隔5分钟分支监控master, develop构建条件仅当代码变更时触发6. 高级配置与优化技巧6.1 构建缓存优化在Dockerfile中添加Gradle缓存层# 在ENV定义后添加 ENV GRADLE_USER_HOME/root/.gradle # 在WORKDIR前添加 RUN mkdir -p $GRADLE_USER_HOME VOLUME $GRADLE_USER_HOME6.2 多阶段构建支持对于复杂项目可考虑多阶段Docker构建# 第一阶段构建 FROM java-gradle-builder:1.0 as builder COPY . /workspace RUN ./gradlew build # 第二阶段运行时 FROM openjdk:11-jre-slim COPY --frombuilder /workspace/build/libs/*.jar /app/app.jar EXPOSE 8080 ENTRYPOINT [java, -jar, /app/app.jar]6.3 Bamboo Agent配置对于分布式构建环境可配置多个Bamboo Agent# 在Agent服务器上 java -jar atlassian-bamboo-agent-installer.jar http://bamboo-server:8085/agentServer/7. 常见问题排查7.1 构建失败诊断检查构建日志的常见步骤确认Bamboo Agent有足够资源CPU、内存验证网络连接特别是到代码仓库和Docker Registry检查构建环境变量是否正确设置7.2 性能优化建议并行构建配置Bamboo并行执行独立任务缓存策略利用Docker层缓存和Gradle缓存资源限制为Docker容器设置合理的CPU和内存限制7.3 安全最佳实践使用专用服务账户而非root运行Bamboo和Docker定期更新所有组件Bamboo、Docker、JDK等配置适当的防火墙规则和网络隔离