Jenkins-Gitlab 前端项目自动化部署

1. 机器准备

|---------|------------|
| 开发 | 10.0.0.204 |
| gitlab | 10.0.0.201 |
| jenkins | 10.0.0.200 |
| web | 10.0.0.202 |

2. 开发主机配置

创建密钥对,将公钥添加到gitlab账号的ssh密钥中

root@dev \~\]#**ssh-keygen** \[root@dev \~\]#**cat /root/.ssh/id_rsa.pub** ![](https://i-blog.csdnimg.cn/direct/49ed5889918647a0b0d1cde5856c169c.png) 复制远程仓库的内容到本地 \[root@dev \~\]#**git clone git@gitlab.lly.org:devops/wheel.git** dns 指向201主机 \[root@dev \~\]#**vim /etc/netplan/01-netcfg.yaml** ...... nameservers: addresses: \[10.0.0.201

3. gitlab 主机配置

配置dns解析

root@gitlab \~\]#**apt update \&\& apt install -y bind9 bind9-utils bind9-host bind9-dnsutils** \[root@gitlab \~\]#**vim /etc/bind/named.conf.default-zones** ...... zone "lly.org" IN { type master; file "/etc/bind/lly.org.zone"; }; \[root@gitlab \~\]#**vim /etc/bind/lly.org.zone** $TTL 1D @ IN SOA master admin ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.201 gitlab A 10.0.0.201 \[root@gitlab \~\]#**chgrp bind /etc/bind/lly.org.zone** \[root@gitlab \~\]#**systemctl enable named** \[root@gitlab \~\]#**systemctl restart named**

4. jenkins 主机配置

dns 指向201主机

root@jenkins \~\]#**vim /etc/netplan/01-netcfg.yaml** ...... nameservers: addresses: \[10.0.0.201

安装 jenkins 和 jdk

root@jenkins \~\]#**apt update \&\& apt -y install openjdk-17-jdk** \[root@jenkins \~\]#**ls** jenkins_2.479.1_all.deb \[root@jenkins \~\]#**dpkg -i jenkins_2.479.1_all.deb** \[root@jenkins \~\]#**systemctl status jenkins.service** 创建脚本将前端文件并赋予权限 \[root@jenkins \~\]#**mkdir -p /data/jenkins/scripts** \[root@jenkins \~\]#**vim /data/jenkins/scripts/test.sh** HOST_LIST=" 10.0.0.202" for host in $HOST_LIST;do scp -r \* root@$host:/var/www/html/ done \[root@jenkins \~\]#**chmod +x /data/jenkins/scripts/test.sh** 在 jenkins 工具上创建全局凭据(凭据中添加的私钥和gitlab上添加公钥成对即可) \[root@jenkins \~\]#**su jenkins** jenkins@jenkins:\~/.ssh$ **cat /root/.ssh/id_rsa** 将查询到的私钥添加到下面private key 中 ![](https://i-blog.csdnimg.cn/direct/10b875e837854c2e801da9cb723e1e40.png) jenkins@jenkins:\~/.ssh$ **cat id_rsa.pub** 将查询到的公钥添加到对应gitlab账户的ssh密钥中 ![](https://i-blog.csdnimg.cn/direct/ce91b7e46b28432c9f0a4f0d20881175.png) 在jenkins工具上创建任务 ![](https://i-blog.csdnimg.cn/direct/dedeb0fe72b248589b982d9c4720455b.png) ![](https://i-blog.csdnimg.cn/direct/434268e4bc2f4678b4cb8f11bfee130f.png) ![](https://i-blog.csdnimg.cn/direct/96e5e31881134324980b1caa039fc066.png)

5. web 服务器配置

dns 指向201主机

root@web \~\]#**vim /etc/netplan/01-netcfg.yaml** ...... nameservers: addresses: \[10.0.0.201

安装 nignx 服务

root@web \~\]#**apt update \&\& apt install nginx -y**

6. 验证是否实现自动化部署

在开发主机上修改代码并上传到远程仓库

root@dev wheel\]#**vim index.html** \[root@dev wheel\]#**git commit -am "change"** \[root@dev wheel\]#**git push --all** 随后用 web 服务器 ip 在浏览器中验证是否显示修改后的页面

相关推荐
青梅橘子皮3 小时前
Linux---基本指令
linux·运维·服务器
REDcker4 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
qq_435287925 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
cui_ruicheng5 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟5 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记5 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday6 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256736 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无7 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801687 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux