【Linux】云服务器自动化部署VuePress博客(Jenkins)

news2024/11/23 15:32:55

前言

博主此前是将博客部署在 Github Pages(基于 Github Action)和 Vercel 上的,但是这两种部署方式对于国内用户很不友好,访问速度堪忧。因此将博客迁移到自己的云服务器上,并且基于 Jenkins(一款开源持续集成工具)实现本地推送代码后,自动化集成部署

环境

云服务器:CentOS 7,OracleJDK 11

本地主机:Windows 11

安装配置

Jenkins

官网安装介绍(Redhat):Redhat Jenkins Packages

注意:最新版本 Jekins 最好适配 jdk11,使用 jdk8 可以正常启动,但是可能会有其他错误

导入密钥

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key

下载安装

yum install jenkins -y

查看目录

rpm -ql jenkins

image-20230809230054692

启动应用

默认启动

# 端口默认8080
java -jar /usr/share/java/jenkins.war --httpPort=8090

常用命令

systemctl start jenkins
systemctl stop jenkins
systemctl status jenkins
# 开机自启动
systemctl enable jenkins

重启命令:http://<公网ip/域名>:8090/restart

修改配置

打开配置文件

vim /usr/lib/systemd/system/jenkins.service

配置文件修改如下(JDK 安装目录以本地为准)

# 安装的OracleJDK则需配置下面两项
Environment="JAVA_HOME=/usr/java/jdk-11.0.20"
Environment="JENKINS_JAVA_CMD=$JAVA_HOME/bin/java"
# 如果使用root用户则配置下面两项
User=root
Group=root
# 更换端口
Environment="JENKINS_PORT=8090"

初次启动时 systemctl start jenkins 执行时间可能略长

打开应用

浏览器访问:http://<公网ip/域名>:8090

注意:外部浏览器访问需要开启对应端口号防火墙,阿里云服务器还需要打开相应安全组

image-20230809234842425

按照上述提示得到密码,执行如下命令

cat /root/.jenkins/secrets/initialAdminPassword

之后选择安装默认工具或是自己手动安装均可

image-20230810000226352

直接使用 admin 用户登陆即可,密码就在上面的文件/root/.jenkins/secrets/initialAdminPassword

image-20230810000940621

创建任务

博客仓库地址

安装插件

安装 nvm-wrapper 插件(没有 nvm 可以直接安装 node 插件),并重启

CentOS7 不兼容 node 高版本问题参考文末博客仓库中的链接

注意:设置 nvm 默认 node 版本命令 nvm alias default <version>

image-20230810004252188

General

image-20230810001119323

源码管理

image-20230810001652153

有时候添加上述 git 地址后会爆出错误:stderr: No ECDSA host key is known for github.com

解决方案
rm -f  ~/.ssh/known_hosts
git ls-remote -h git@github.com:ReturnTmp/blog-vuepress-vdoing.git HEAD
添加凭证

选择 SSH Username with private key

image-20230810002024280

描述和 ID 可以随意,最后 Key 直接复制 SSH 私钥即可

image-20230810002204296

构建触发器

image-20230810002542374

image-20230810002655311

添加 Webhooks,Payload Url 填写 http://<公网ip/域名>:8090/github-webhook/ 即可,最后点击创建

构建环境

image-20230810004120879

image-20230810004727779

echo $WORKSPACE
node -v
npm -v
npm install
npm run build

构建成功后之后部署 Nginx 即可

部署 Nginx

nginx.conf(vuepress 自行更改为自己的工程名)

        location / {
             root   /var/lib/jenkins/workspace/vuepress/docs/.vuepress/dist;
             index  index.html index.htm;
             try_files $uri $uri/ /index.html;
        }

访问应用

浏览器访问:http://<IP或域名>/

image-20230810204557026

修改本地代码推送到远程分支,观察到 Jenkins 出现新的构建记录,WebHooks 即配置成功

本文对应博客仓库地址,本文也同步更新在仓库博客中,直接从仓库中进入博客链接首页即可看到文章

有任何问题或错误欢迎大家在评论区指出

参考文章

Jenkins实现Vuepress自动化部署(上)-安装配置Jenkins - 掘金 (juejin.cn)

Jenkins实现Vuepress自动化部署(下)-Jenkins任务配置自动化部署 - 掘金 (juejin.cn)

推荐阅读

Centos 7 安装 Jenkins-阿里云开发者社区 (aliyun.com)

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最强自动化测试框架Playwright-(2)实用操作

元素定位 定位器是playwright自动等待和重试功能的核心部分。简而言之&#xff0c;定位器表示一种随时在页面上查找元素的方法。 Locators | Playwright Python 如下这些是推荐的 page.get_by_role&#xff08;&#xff09; 按显式和隐式辅助功能属性进行定位。 page.get…

Dockerfile 语法梳理及介绍

1. FROM FROM参数&#xff1a;从什么基础镜像构建新的镜像。 举例 &#xff1a; FROM centos&#xff0c; FROM ubuntu, FROM hello-world 使用 centos 镜像作为基础镜像。 注意&#xff1a;尽量使用官方的镜像作为基础镜像, 为了安全起见。 2. LABEL LABEL参数&#xff1a;从上…

交流汽车充电桩也有大功率的,为什么市场还是想做直流的?

新能源汽车交流充电桩和直流充电桩的区别是什么&#xff1f; 交流汽车充电桩也有大功率的&#xff0c;为什么市场还是想做直流的&#xff1f; 交流充电桩和直流充电桩最本质的区别是充电时车载设备的参与程度。 交流充电桩就好比是一双筷子&#xff0c;它把食物送到嘴里&#…

Windows 编译CEF源码详细记录

背景 默认的CEF不支持音视频功能&#xff0c;需要下载源码将ffmpeg开关打开&#xff0c;再进行编译。 Linux编译参考&#xff1a; 《Linux CEF源码下载编译详细记录》 创建目录结构 code/automate/automate-git.py <-- CEF build scriptchromium_git/cef/ …

Vue数组变更方法和替换方法

一、可以引起UI界面变化 Vue 将被侦听的数组的变更方法进行了包裹&#xff0c;所以它们也将会触发视图更新。这些被包裹过的方法包括&#xff1a; push()pop()shift()unshift()splice()sort()reverse() 以上七个数组都会改变原数组&#xff0c;下面来分别讲解它们的区别&…

《C和指针》(6)指针

1、内存和地址 计算机的内存是由数以亿万计的位&#xff08;bit&#xff09;组成&#xff0c;每一个位可以容纳值0、1值。由于一个位所能表示的值的范围太有限&#xff0c;所以单独的位用处不大。通常许多为合成一组作为一个单位&#xff0c;这样就可以存储范围较大的值。下图…

【AI】Python调用讯飞星火大模型接口,轻松实现文本生成

随着chatGPT的出现&#xff0c;通用大模型已经成为了研究的热点&#xff0c;由于众所周知的原因&#xff0c;亚太地区调用经常会被禁&#xff0c;在国内&#xff0c;讯飞星火大模型是一个非常优秀的中文预训练模型。本文将介绍如何使用Python调用讯飞星火大模型接口&#xff0c…

flask-----初始项目架构

1.初始的项目目录 -apps 包 ------存放app -user文件夹 -------就是一个app -models.py --------存放表模型 -views.py -------存放主代码 -ext包 -init.py -------实例化db对象 -manage.py -----运行项目的入口 -setting.py -----配置文件 2.各文件内容 manage…

剑指offer39.数组中出现次数超过一半的数字

这个题非常简单&#xff0c;解法有很多种&#xff0c;我用的是HashMap记录每个元素出现的次数&#xff0c;只要次数大于数组长度的一半就返回。下面是我的代码&#xff1a; class Solution {public int majorityElement(int[] nums) {int len nums.length/2;HashMap<Integ…

【C++】异常的使用和细节

传统C语言错误异常的方式 C语言一般使用assert来处理错误&#xff0c;assert确实很不错&#xff0c;可以把错误的行数都提示出来&#xff0c;但是&#xff0c;assert有一个致命的缺点&#xff0c;就是触发assert之后就会终止程序&#xff0c;还有一点就是在release环境下&#…

如何通过Pytest的插件,轻松切换自动化测试的环境地址?

前言 前面小编介绍了如何通过Pytest的插件来实现自动化测试的环境的切换&#xff0c;当时使用的方法是通过钩子函数进行获取命令行参数值&#xff0c;然后通过提前配置好的参数进行切换测试环境地址。加我VX&#xff1a;atstudy-js 回复“测试”&#xff0c;进入 自动化测试学…

【CDH集群】无法发出查询:Host Monitor未运行

无法发出查询:Host Monitor未运行 【CDH集群】无法发出查询:Host Monitor未运行同事的解决方案解决方法&#xff1a;删除原uuid重启agent查看新uuid修改scm数据库中HOSTS表中的agent的uuid 【CDH集群】无法发出查询:Host Monitor未运行 起初是impala报错&#xff0c;连接不上&…

武器换弹系统这节课出现的bug,角色不能正确掏枪了,只有换完弹夹以后才能正常掏枪了

UE4系列文章目录 文章目录 UE4系列文章目录前言一、蓝图实现二、错误原因三、修改后的效果 前言 在学习武器换弹系统这节课出现的bug&#xff0c;角色不能正确掏枪了&#xff0c;只有换完弹夹以后才能正常掏枪了&#xff0c;就是添加了换弹之后才影响了持枪功能&#xff0c;在…

Maven的入门级——介绍,安装,导入项目,全网最最详细教程!!,包含可能会包的错误的已经指出来了

目录 一.Maven的基本介绍 二. Maven的使用过程 使用步骤&#xff1a; 三.Maven的安装 3.1 下载 3.2 配置环境步骤 3.3配置settings.xml文件 四.入门案列 4.1 配置Eclipse环境 4.2 介绍Maven项目的结构 4.3 运行测试项目 一.Maven的基本介绍 我们可以知道在程序员做项目的时…

ngrok内网穿透可以实现资源共享吗?快解析更加简洁

随着互联网的高速发展&#xff0c;越来越多的人开始意识到内网穿透技术的重要性。在这一技术中&#xff0c;ngrok已经成为了一个备受关注的工具。然而&#xff0c;很多人对于ngrok是否可以进行资源共享存在疑问。本文将从新的角度出发&#xff0c;深入探讨这个问题。 了解什么…

SAP使用函数NUMBER_GET_NEXT创建流水号

1. 系统中设定流水号&#xff1b;使用T-Code&#xff1a;SNRO来创建一个流 输入Object&#xff1a;ZLC_001&#xff0c;然后单击创建。 然后输入Shorttext, Long text, Number length domain在写程序的时候应该会另外创建&#xff0c;这里测试就使用料号的Domain MATNR来做,其他…

Mahout教程_编程入门自学教程_菜鸟教程-免费教程分享

教程简介 Mahout 是 Apache Software Foundation&#xff08;ASF&#xff09; 旗下的一个开源项目&#xff0c;提供一些可扩展的机器学习领域经典算法的实现&#xff0c;旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现&#xff0c;包括聚类、分类、推荐…

利用PHP的特性做免杀Webshell

0x01 前言 最近很多家厂商都陆续开放了自己的Webshell检测引擎&#xff0c;并且公开接口&#xff0c;邀请众安全研究员参加尝试bypass检测引擎&#xff0c;并且给予奖励&#xff0c;我也参加了几场类似的活动&#xff0c;有 ASRC 的 伏魔计划 &#xff0c;也有 TSRC 的 猎刃计…

8月盛夏相约|上海国际智能家居展SSHT 精彩亮点抢先看

上海国际智能家居展览会&#xff08;SSHT&#xff09; 2023年8月29至31日 上海新国际博览中心举行 SSHT 作为国内专业智能家居展会&#xff0c;定位为“智能家居技术的行业平台”&#xff0c;以“技术整合”及“跨界合作”为主轴&#xff0c;旨在呈现不同层面的智能家居技术如…

计算机基础知识一

1、计算机系统组成 1.1 硬件 CPU&#xff1a;中央处理器、计算机核心部件、负责计算任务 内存&#xff1a;记忆功能、存储二进制数&#xff0c;内存是一个字节一个地址。 内存大小换算&#xff1a; 8 bits 1 Byte 1024 Bytes Bytes 1 KB &#xff0c; 1024 KB KB 1 …