前言
博主此前是將博客部署在 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
啟動應用
默認啟動
# 端口默認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
注意:外部瀏覽器訪問需要開啟對應端口號防火墻,阿里云服務器還需要打開相應安全組
按照上述提示得到密碼,執行如下命令
cat /root/.jenkins/secrets/initialAdminPassword
之后選擇安裝默認工具或是自己手動安裝均可
直接使用 admin 用戶登陸即可,密碼就在上面的文件/root/.jenkins/secrets/initialAdminPassword
中
創建任務
博客倉庫地址
安裝插件
安裝 nvm-wrapper 插件(沒有 nvm 可以直接安裝 node 插件),并重啟
CentOS7 不兼容 node 高版本問題參考文末博客倉庫中的鏈接
注意:設置 nvm 默認 node 版本命令
nvm alias default <version>
General
源碼管理
有時候添加上述 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
描述和 ID 可以隨意,最后 Key 直接復制 SSH 私鑰即可
構建觸發器
添加 Webhooks,Payload Url 填寫 http://<公網ip/域名>:8090/github-webhook/ 即可,最后點擊創建
構建環境
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或域名>/
修改本地代碼推送到遠程分支,觀察到 Jenkins 出現新的構建記錄,WebHooks 即配置成功
本文對應博客倉庫地址,本文也同步更新在倉庫博客中,直接從倉庫中進入博客鏈接首頁即可看到文章
有任何問題或錯誤歡迎大家在評論區指出
參考文章
Jenkins實現Vuepress自動化部署(上)-安裝配置Jenkins - 掘金 (juejin.cn)
Jenkins實現Vuepress自動化部署(下)-Jenkins任務配置自動化部署 - 掘金 (juejin.cn)
推薦閱讀
Centos 7 安裝 Jenkins-阿里云開發者社區 (aliyun.com)
本文由博客一文多發平臺 OpenWrite 發布!