安装 Docker
Docker 官方提供了安装脚本以简化安装流程,执行命令后就能自动安装 Docker 了:
// 官方(因为墙的原因所以别用这个)
curl -sSL https://get.docker.com/ | sh
// 阿里云镜像
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh
// DaoClound镜像
curl -sSL https://get.daocloud.io/docker | sh
安装 Jenkins
docker pull jenkins/jenkins
执行以下命令启动 Jenkins:
docker run -d --name jenkins \
-p 8080:8080 -p 50000:50000 \
-v /home/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins
-d默认不进入容器,想进入容器可以使用docker exec -it 容器id /bin/bash。--name jenkins容器名字。-p 8080:8080 -p 50000:50000把内部端口8080``50000映射到外部的8080``50000。-v /var/jenkins_home:/var/jenkins_home将 Jenkins 容器的数据保存在本地的某个目录中。-v /var/run/docker.sock:/var/run/docker.sock和-v /usr/bin/docker:/usr/bin/docker的作用是让 Jenkins 容器里能允许外部 Docker 命令。
使用ip:8080就可以访问 Jenkins 啦,记得操作下防火墙。
firewall-cmd --add-port=8080/tcp // 服务器那边的也记得放开这个端口
等一会就会出现以下界面了:
运行cat /home/jenkins_home/secrets/initialAdminPassword获得密码。
安装推荐的插件即可,后面会让你创建个管理员用户,或者用admin账户也行,然后一直下一步。
配置 Github
首先上传公钥到 Github:
运行ssh-keygen生成 SSH key。
访问 github.com/settings/ke…,新建 SSH key。
把/root/.ssh/id_rsa.pub的内容输入到 Key 中。
然后生成 Github 的 Personal access tokens:
进入 github.com/settings/to…,点击Generate new token。
选择如下,然后点击 Generate token。
生成的token保存下来后面要用到。
Jenkins 凭据
进入 Jenkins - 系统管理 - Manage Credentials,点击全局,点击添加凭据。
需要添加两个凭据:
1.SSH Username with private key 类型。
Username输入root,Private Key输入/root/.ssh/id_rsa文件的内容。
2.Secret text类型。
将Github生成的Personal access tokens填入 Secret中。
最后进入 Jenkins - 系统管理 - 系统配置,添加 Github 服务器,凭据选刚才新建的Secret text类型的凭据,点链接测试出现Credentials verified for user xxx 就说明成功了。
自动打包 SpringBoot 项目
SpringBoot项目根目录下新建 Dockefile文件,内容如下:
FROM maven:3.8.4-openjdk-17 AS builder
VOLUME /root/.m2/repository:/root/.m2/repository
COPY pom.xml pom.xml
COPY src/ src/
RUN mvn clean package -Dmaven.test.skip=true
FROM openjdk:17.0.2 as runtime
COPY --from=builder target/[name].jar [name].jar
EXPOSE 9873
ENTRYPOINT ["java", "-jar", "[name].jar"]
Jenkins 这边新建一个自由风格的软件项目。
源码管理选 Git,Respository URL填 SSH 地址,Credentials之前新建的SSH Username with private key 类型凭据。
构建触发器选 GitHub hook trigger for GITScm polling。
构建选执行shell。
image_name="[name]"
container_id=`docker ps -a -q --filter name=$image_name`
image_id=`docker images -q --filter reference=$image_name`
if [ -z "$container_id" ]
then
echo "不存在该容器,将直接进行启动该操作..."
else
echo "已存在容器,执行删除操作..."
docker stop "$container_id"
docker rm "$container_id"
docker rmi "$image_id"
fi
echo "构建镜像..."
docker build -t "$image_name":latest .
echo "运行镜像..."
docker run -d -p 9873:9873 --name "$image_name" "$image_name":latest
进入 Jenkins - 系统管理 - 系统配置,点击高级,勾选为 Github 指定另外一个 Hook URL。
进入Github项目仓库 - Setting - Webhooks,点击Add webhook。
把Jenkins 中生成的 Hook URL 填入 Payload URL,Content type 选 application/json。
一切完成后每次 git push 就会自动构建发布了。