前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Jenkins自动化部署项目

使用Jenkins自动化部署项目

作者头像
fliter
发布2023-10-05 08:19:15
3910
发布2023-10-05 08:19:15
举报
文章被收录于专栏:旅途散记旅途散记

Jenkins的同类产品

Jenkins 是一款功能强大的开源持续集成/持续交付 (CI/CD) 工具,但也有一些替代品可供选择,以下是其中一些:

  • Travis CI:Travis CI 是另一款流行的持续集成工具,可与 GitHub 集成,支持多种编程语言。
  • GitLab CI/CD:GitLab CI/CD 是 GitLab 提供的一款集成式 CI/CD 工具,可以与 GitLab 无缝集成,支持多个平台和语言。
  • CircleCI:CircleCI 是一个快速的 CI/CD 工具,它支持多种编程语言和框架,并提供了强大的可视化功能。
  • TeamCity:TeamCity 是一款功能强大的 CI/CD 工具,它具有丰富的功能和易于使用的界面,支持各种构建工具和语言。
  • Bamboo:Bamboo 是 Atlassian 提供的一款可扩展的 CI/CD 工具,它具有易于使用的界面和丰富的插件生态系统,支持多种构建工具和语言。

选择适合自己的 CI/CD 工具取决于个人或团队的需求和偏好,可以根据自己的实际情况选择。


搭建Jenkins服务

Mac上直接 brew install jenkins

启动:

brew services start jenkins

http://localhost:8080/

安装插件:

Jenkins 推荐安装的插件:

Jenkins 是一个强大的持续集成和交付工具,具有可扩展性和可定制性。在安装 Jenkins 时,可以安装许多插件,这些插件可以扩展 Jenkins 的功能。以下是一些 Jenkins 推荐安装的插件:

  • Pipeline:Pipeline 插件允许用户在 Jenkins 上创建和执行 Pipeline,它是 Jenkins 提供的一种可编排、可扩展的方法,可以自动化构建、测试和部署软件。
  • Git:Git 插件允许 Jenkins 与 Git 版本控制系统进行集成,这是许多软件开发项目使用的一种流行的版本控制系统。
  • GitHub:GitHub 插件可以将 Jenkins 与 GitHub 集成,它可以让 Jenkins 在 GitHub 上自动构建、测试和部署代码。
  • Maven Integration:Maven Integration 插件是将 Jenkins 与 Apache Maven 集成的一种方法。Maven 是一个流行的 Java 构建工具,用于自动化构建、测试和部署 Java 应用程序。
  • JUnit:JUnit 插件可以让 Jenkins 集成 JUnit 测试框架,使开发人员能够自动运行单元测试和集成测试,并将测试结果反馈到 Jenkins 上。
  • Docker:Docker 插件可以让 Jenkins 与 Docker 容器集成。它允许开发人员在 Jenkins 上自动构建和部署 Docker 镜像。
  • SSH Agent:SSH Agent 插件允许 Jenkins 通过 SSH 连接到远程服务器,并执行部署操作。
  • Blue Ocean:Blue Ocean 插件是 Jenkins 的一个新用户界面,可以让用户更轻松地创建和管理 Pipeline。

这些插件只是 Jenkins 中可用的众多插件的一小部分,具体插件的选择取决于您的需求和项目要求。

创建第一个管理员用户

实例配置


部署一个Go项目(配置某个分支每次有push,自动拉取最新代码并构建)

想要构建的示例代码:[1]

代码语言:javascript
复制
package main

import (
 "time"

 "github.com/gin-gonic/gin"
)

func main() {
 r := gin.Default()
 r.GET("/ping", func(c *gin.Context) {
  c.JSON(200, gin.H{
   "message": "pong" + " 当前时间: " + time.Now().Format("2006-01-02 15:04:05"),
  })
 })
 r.Run(":9000")
}
jenkins中构建任务

输入一个任务名称,选择 freestyle project 点击确定

选择源码管理,使用git

填写github账号和密码

指定要构建的分支(看远程仓库的主分支是master还是main,或者可以选其他分支)

如果使用main分支,此处指定分支就要填写*/main

增加构建步骤选择执行Shell

代码语言:javascript
复制
# shell中写入
go build -o hello
BUILD_ID=DONTKILLME
nohup ./hello &>hello.log &

Jenkins常见问题(1)解决构建完自动杀掉衍生进程问题[2]

点击保存

立即构建

但直接在该目录下执行go build -o hello是可以的

参考 jenkins执行shell命令时,提示“Command not found”处理方法[3]

在shell脚本中新增 source /etc/profile

再次构建

访问 http://localhost:9000/ping

杀死服务: kill -9 $(lsof -i:9000 -t)

推荐将写在Jenkins上面 执行Shell的内容 写入到deploy.sh中,并推动到Github仓库,成为项目的一部分(这个deploy.sh脚本仅用于构建),而后将Jenkins 执行Shell的输入框改为bash ./deploy.sh

这样的话(看起来)离自动化部署就更近了一步(因为可以动态改动deploy.sh中的内容)

不过每次还是需要手动去点击构建

配置Jenkins&Github,每次检测到push就自动构建

配置前要求:

  • 1.Jenkins已经安装Github plugin插件;(如果一开始选的是安装推荐插件 则可忽略这一步,这个默认是安装的)
  • 2.Jenkins服务器已经拥有一个公网IP地址

配置Jenkins的Webhook接收地址: Dashboard--> Manage Jenkins--> Configure System

另外 可以在这里[4]配置管理员邮箱,邮件通知等

记录好webhook的地址: http://127.0.0.1:8080/github-webhook/

在github对应仓库的设置中,配置webhook,填入该地址

可见需要可访问得通的公网地址才可以,内网ip无法回调成功

如果Jenkins是暴露在了公网中,这里配置好后,当向这个仓库推送新代码时,github的webhook会发消息给Jenkins,通知其拉取最新代码并构建。。在此不试了


更多参考:

jenkins部署go程序(自动编译部署)[5]

使用Github的WebHooks实现生产环境代码自动更新[6]

Jenkins 自动化部署[7]

Jenkins实现golang项目远程自动化部署[8]

参考资料

[1]

想要构建的示例代码:: https://github.com/cuishuang/jenkins-go-first/blob/main/hello.go

[2]

Jenkins常见问题(1)解决构建完自动杀掉衍生进程问题: https://blog.csdn.net/ben_na_/article/details/123990413

[3]

jenkins执行shell命令时,提示“Command not found”处理方法: https://blog.csdn.net/qq_29235677/article/details/121416493

[4]

这里: http://localhost:8080/configure

[5]

jenkins部署go程序(自动编译部署): https://juejin.cn/post/6952765925388976165#heading-8

[6]

使用Github的WebHooks实现生产环境代码自动更新: https://cloud.tencent.com/developer/article/1358657

[7]

Jenkins 自动化部署: https://juejin.cn/post/6844903812088463374

[8]

Jenkins实现golang项目远程自动化部署: https://juejin.cn/post/708407101720258151

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-01 08:22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 旅途散记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Jenkins的同类产品
  • 搭建Jenkins服务
  • 部署一个Go项目(配置某个分支每次有push,自动拉取最新代码并构建)
    • jenkins中构建任务
      • 配置Jenkins&Github,每次检测到push就自动构建
      • 参考资料
      相关产品与服务
      持续集成
      CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档