重点:可能会缺少一些环境,可以自己安装,都很简单,难的话我会记下来
持续集成(CI)
持续集成(Continuous Integration)指的是频繁地将代码集成到主干。它的好处主要有:
- 快速发现错误,每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易
- 防止分支大幅偏离主干,如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大
持续交付(CD)
持续交付(Continuous Delivery)指的是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续交付可以看作持续集成的下一步,它强调的是,不管怎么更新,软件是随时随地可以交付的,
持续部署
持续部署(Continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。
持续部署的前提是能自动化完成测试、构建、部署等步骤。
Jenkins
Ubuntu安装
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] <https://pkg.jenkins.io/debian-stable> binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
// 更新包列表
sudo apt-get update
// 安装Jenkins和Java环境
sudo apt-get install jenkins openjdk-17-jre
// 检查安装状态
sudo systemctl status jenkins
// 如果你遇到关于 GPG 密钥的错误,请确保密钥已正确安装。你可以尝试手动添加 GPG 密钥:
wget -q -O - <https://pkg.jenkins.io/debian/jenkins.io.key> | sudo gpg --dearmor -o /usr/share/keyrings/jenkins-keyring.asc
修改端口
// 打开文件
sudo nano /etc/default/jenkins
// 修改端口号
HTTP_PORT=8081
// 重新加载配置
sudo systemctl daemon-reload
// 重启服务
sudo systemctl restart jenkins
// 检查服务状态
sudo ufw allow 8081
配置SSH
登录 jenkins 服务器,执行 “ssh-keygen”:
这里会让你选择一个秘钥生成存放的路径,我使用了默认的/root/.ssh/id_rsa, 还有让你这是一个 “passphrase”,可以不加密码直接回车。我设置了密码,比如 “testssh”。
生成成功后,进入到/root/.ssh 目录下查看是否有秘钥文件:
在插件市场中安装Publish Over SSH
在 jenkins 的 “Configure System”(系统配置)中拉到最下面,找到 “Publish over SSH” 添加要远程的服务器,并进行配置。
再点击测试看是否有Success
然后看这个视频
本机详细演示Jenkins+Docker自动化部署springboot项目_哔哩哔哩_bilibili
运行Jar
选择构建一个Maven项目
Shell语句
# 杀死旧的应用程序进程
pkill -f dull-admin-0.0.1-SNAPSHOT.jar
# 防止 Jenkins 杀死新启动的进程
export BUILD_ID=dontKillMe
# 启动新的应用程序实例
nohup java -jar dull-admin/target/dull-admin-0.0.1-SNAPSHOT.jar > output.log 2>&1 &
部署前端
选第一个
配置就和之前的差不多,要修改的只有一个执行的shell
# 构建步骤
node -v
npm -v
rm -rf node_modules
npm install
npm run build
# 调试信息
echo "当前目录:$(pwd)"
echo "目录内容:"
ls -l
echo "dist目录内容:"
ls -l dist
# 复制构建产物,这里我偷懒了,直接将构建完的产物移动到我部署的文件夹中
# 这里我使用的宝塔构建的项目,所以要将角色换成www
sudo rsync -av --chown=www:www dist/ /www/wwwroot/www.dullfan.cn/
# (可选)修改文件所有者和权限
sudo chown -R www:www /www/wwwroot/www.dullfan.cn/
sudo chmod -R 755 /www/wwwroot/www.dullfan.cn/
可能上方的代码要显示输入密码,这个时候要去修改文件了
打开sudoers文件
sudo visudo
添加Jenkins用户权限,在文件中添加
jenkins ALL=(ALL) NOPASSWD: ALL
这条命令表示允许 jenkins
用户在使用 sudo
命令时无需输入密码。
按 Ctrl + O
然后按 Enter
确认保存。按 Ctrl + X
退出。