第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

一鍵搞定!用Jenkins+Gogs讓你的SpringBoot項目飛起來

標(biāo)簽:
SpringBoot

小nuo在玩转Next.js、React这些前端项目部署到Vercel时,心里那个痒啊,想着:“嘿,Vercel这家伙怎么这么牛,代码一提交就自动构建了?我能不能也搞个后端自动化部署呢?”于是乎,就有了这篇充满探索精神的文章。

初始化

首先,咱们得把Jenkins长期支持(LTS)版本的镜像拉下来:

docker pull jenkins/jenkins:lts-jdk17

创建一个名叫“jenkins-net”的网络,这样我们的容器小伙伴们就可以在这个网络里愉快地聊天了(比如 Jenkins 和 Docker 守护进程容器)。

docker network create jenkins-net

编写docker-compose.yml文件,这可是咱们让容器们开派对的邀请函哦:

services:
  jenkins:
    image: jenkins/jenkins:lts-jdk11
    container_name: jenkins
    privileged: true
    user: root
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - /var/jenkins_home:/var/jenkins_home        
      - /var/run/docker.sock:/var/run/docker.sock  
      - /usr/bin/docker:/usr/bin/docker
    environment:
      - JAVA_OPTS=-Djenkins.install.runSetupWizard=false
    networks:
      - jenkins-net

networks:
  jenkins-net:
    driver: bridge
Jenkins与Gogs的完美邂逅:自动化部署大冒险

搞定JDK和Maven,让Jenkins变身超级英雄

首先,启动你的Jenkins,让它从沉睡中醒来并完成初始化。接着,点击“系统管理”,就像你走进了Jenkins的秘密基地。

Pasted image 20241213144522.png

然后,进入“全局工具配置”,这里就像是Jenkins的武器库,你需要给它配备好Maven和JDK这两把神兵利器。

Pasted image 20241213144401.png

配置好Maven和JDK后,别忘了点击“应用”和“保存”,这样Jenkins就能随时准备好为你服务啦!

Pasted image 20241213150803.png
Pasted image 20241213150836.png
Pasted image 20241213150726.png

接下来,我们需要为Jenkins配置一个API Token,并获取那个神秘的csrf令牌,这可是确保安全验证的关键哦!

Pasted image 20241213150416.png

在添加新Token时,输入一个帅气的名字,然后点击生成,记得保存这个Token,它可是你的通行证!

Pasted image 20241213145907.png

如果你使用的是高版本Jenkins,那么恭喜你,它已经升级了防御系统,需要获取一个特殊的字符串(csrf)来进行安全验证。打开运行Jenkins的主机命令行,输入如下命令,准备迎接新的挑战吧!

curl -u Jenkins用户ID:API Token <http://IP地址>:端口/crumbIssuer/api/json

先别急着走开,咱们得保存一个超级重要的字符串——crumb。这玩意儿后面可是大有用处!

Pasted image 20241213153025.png

接下来,咱们要创建一个Jenkins任务,填上Gogs的小秘密。点击“新建任务”,然后选择“自由风格的软件项目”。

Pasted image 20241213144654.png

现在轮到填写Gogs的秘密了,别忘了哦!

Pasted image 20241213145907.png

最后一步,配置Gogs仓库的Git钩子。找到你的仓库,点击“仓库设置”,然后选择“管理Git钩子”。

Pasted image 20241213145206.png

在钩子文本里填上下面这段神奇的文字:

curl -X POST "<http://IP地址>:端口/job/任务名/build?token=任务的Gogs secret" \
     -H "Jenkins-Crumb: 前面获取的Crumb" \
     -u Jenkins用户ID:API Token --verbose

让Jenkins和Gogs手牵手,实现自动化部署

首先,咱们得告诉Jenkins去哪里找你的Gogs项目仓库。别忘了指定分支哦,就像给它指路一样!

Pasted image 20241213154611.png

接下来,设置一个触发器,让它在Gogs有新提交时自动开始工作。这就像给Jenkins装了个嗅觉灵敏的鼻子,一闻到代码变化就立刻行动起来!

Pasted image 20241213155649.png

然后,选择构建步骤,调用Maven来个大扫除并打包,记得加上 -DskipTests,这样测试就不会拖慢我们的速度了。

Pasted image 20241213160041.png

最后,再加点料,点击“执行shell”,输入以下脚本内容(端口根据实际情况调整)。这样一来,我们的项目就能顺利跑起来了!


CONTAINER_NAME="my-jenkins-app"

docker build -t jenkins-demo:latest .

EXISTING_CONTAINER=$(docker ps -a -q -f name="^${CONTAINER_NAME}$")

if [ -n "$EXISTING_CONTAINER" ]; then
  echo "发现已有容器:$EXISTING_CONTAINER,正在删除..."
  docker rm -f "$EXISTING_CONTAINER"
fi

docker run -d -p 18080:18080 --name="$CONTAINER_NAME" jenkins-demo:latest

echo "等待容器启动..."
for i in {1..10}; do
  if docker ps -q -f name="^${CONTAINER_NAME}$" &> /dev/null; then
    echo "容器启动成功!"

    echo "清理无效镜像..."
    docker images -f "dangling=true" -q | xargs -r docker rmi
    echo "清理完成!"

    exit 0
  fi
  sleep 2
done

echo "容器启动超时!请检查错误日志。"
exit 1

哎呀,咱们今天要聊聊怎么用Docker来搞一场容器化的大戏!想象一下,你就是那个导演,而Dockerfile就是你的剧本。首先,别忘了在你的项目src目录旁边找个好位置,给这位“明星”——Dockerfile一个家。

image.png

接下来,是时候给这位明星写剧本了,也就是配置Dockerfile文件的内容啦。

FROM jdk17.0.10-aarch64:latest  

COPY ./target/jenkins_demo-0.0.1-SNAPSHOT.jar /app.jar  

ENTRYPOINT ["java","-jar","/app.jar"]  

为什么是这样的配置呢?让我们一起揭开Maven打包项目后的神秘面纱吧!

image.png

总结

其实,整个过程就是Jenkins和Gogs这对好基友的默契配合。这篇文章记录了我成功部署后端项目的经历,如果有什么地方没讲清楚,还请大家多多包涵。小nuo目前还在大二,正在努力学习中!如果你有任何问题或者想要分享的经验,欢迎在评论区畅所欲言哦~

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消