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

server/2024/11/25 15:05:55/

 1. 机器准备

开发10.0.0.204
gitlab10.0.0.201
jenkins10.0.0.200
web10.0.0.202

2. 开发主机配置

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

[root@dev ~]#ssh-keygen
[root@dev ~]#cat /root/.ssh/id_rsa.pub

复制远程仓库的内容到本地 

[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 中

jenkins@jenkins:~/.ssh$ cat id_rsa.pub  

将查询到的公钥添加到对应gitlab账户的ssh密钥中

jenkins工具上创建任务

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 在浏览器中验证是否显示修改后的页面


http://www.ppmy.cn/server/144821.html

相关文章

如何安全删除 Linux 用户帐户和主目录 ?

Linux 以其健壮性和灵活性而闻名,是全球服务器和桌面的首选。管理用户帐户是系统管理的一个基本方面,包括创建、修改和删除用户帐户及其相关数据。本指南全面概述了如何在 Linux 中安全地删除用户帐户及其主目录,以确保系统的安全性和完整性。…

【Github】如何使用Git将本地项目上传到Github

【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置(可选) 3. 创建Github仓库4. 获取仓库地址5. 本地操作(1)进入项目文件夹(2)克隆…

AWS EventBridge 和 Lambda 监控 ECS 事件并发送钉钉通知

在现代云原生架构中,Amazon Elastic Container Service (ECS) 是一项非常流行的容器编排服务。它允许您轻松地运行和管理容器化应用程序,并提供了许多有用的功能,如自动扩展、负载均衡和服务发现等。然而,随着应用程序的复杂性不断增加,有效监控 ECS 事件变得至关重要,以确保应…

数据结构与算法——1120——时间空间效率问题求边界值

目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 (1)-i (2)~i (3&#x…

【含文档】基于django+Vue的荣誉证书管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 主要技术: django,mysql,vue 2.视频演示地址 3.功能 系统定义了三个角色:管理员和学生和教师。 管理员进…

Linux-Apache静态资源

文章目录 静态资源权限设置 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月20日11点21分 静态资源 Apache配置静态资源 可以在网页上配置一个静态的FTP服务器,让用户…

安卓InputDispatching Timeout ANR 流程

1 ANR的检测逻辑有两个参与者: 观测者A和被观测者B,当然,这两者是不在同一个线程中的。2 A在调用B中的逻辑时,同时在A中保存一个标记F,然后做个延时操作C,延时时间设为T,这一步称为: 埋雷 。3 B中的逻辑如果…

设计自己的网络通信协议

文章目录 一、为什么需要设计网络通信协议1. **标准化通信规则**2. **确保数据传输的可靠性**3. **支持网络的多样性和可扩展性**4. **分层设计,简化复杂性**5. **实现设备的互操作性**6. **支持多任务和多应用并发**7. **提供安全性**8. **支持不同的通信模式**总结…