使用GitHub Actions 自动构建部署发布Spring Boot应用
前言
最近这一周,我加入了奇奇怪怪的Team,我负责将编写的新接口打包并发布到服务器上。每次都需要手动执行打包、发布、关闭旧版本程序和启动新版本程序等繁琐的步骤,这让我感到非常不便,而且也非常重复。对于这种重复性的任务,我想到了可以利用机器来完成,于是决定尝试使用 GitHub 上的工作流。
需要准备的东西:
- 掌握搜索引擎技能(保证一直是最新的知识。)
- 一个大脑🧠
- 一个GitHub的账号()
- 掌握基础的git 操作
- 你需要掌握一门语言例如 Java nodejs等这样才可以使用工作流
本篇就那我自己写的屎山 Spring Boot应用举例子吧
什么是Gitub-Actions?
GitHub Actions是自动化工作流程工具,用于自动化构建、测试、部署和集成软件项目。它通过一系列事件、触发器和任务来执行各种操作,以实现持续集成和持续交付。
GitHub允许你可以发布以及共享你自己的Actions,别人可以通过市场找到你的Actions从而不需要在重复造轮子了。
什么是CI/CD?
CI/CD是持续集成(Continuous Integration)与持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写,是一种软件开发实践和方法论。
持续集成(CI)是指开发人员将其代码频繁地集成到共享代码存储库中,并通过自动化构建和测试流程来验证代码的正确性。这样可以确保团队成员的代码变更能够快速地集成到主干代码中,并减少代码集成过程中的错误。
持续交付(CD)是指将通过持续集成产生的软件交付给质量保证团队进行进一步的自动化测试、部署和发布。持续交付的目标是确保软件始终处于可部署状态,以便可以随时交付给用户。
持续部署(CD)是持续交付的进一步延伸,指将通过持续交付阶段产生的可部署软件自动地部署到生产环境中,使软件能够快速地、可靠地投入使用。
通过采用CI/CD实践,团队可以实现更快速、可靠、高质量的软件交付。自动化的构建、测试、部署和发布流程能够减少人为错误,提高开发团队的生产效率,并使软件交付过程更加可靠和可追踪。
以上文本来自chatGPT。
正文
Actions的概念:
workflow
(工作流):一个工作流程是一系列的任务(jobs)和步骤(steps),定义了自动化的过程。- Job(任务):一个工作流程可以包含一个或多个任务,每个任务运行在独立的环境中。每个任务可以包含一系列的步骤,可以并行或顺序执行。
- Step(步骤):每个任务包含一个或多个步骤,每个步骤代表一个操作,例如构建代码、运行测试、部署应用程序等。步骤是工作流程的最小单位。
- Workflow file(工作流程文件):工作流程文件是以YAML格式编写的文件,用于定义工作流程的结构、任务和步骤。通常存储在代码仓库的特定目录中(如**
.github/workflows
**)。
差不多主要使用的也就这些了。
Workflow file(工作流程文件)
对于**Workflow file
** 的,关键字非常多我这边放GitHub的文档地址,有需要的可以自己看看吧,**Workflow file
** 使用yaml
文件类型编写。
一下是常见的关键字。
- name :一般是和你的
Workflow file
文件字一样,改成其他的和省略也没啥事情。
1 | name: Build and Publish Release |
- on :指定触发条件,例如 push frok等,例如我这里设置的是push 的检测分支中的 master 分支。
`on: push: branches:
- master`
- jobs :工作流运行由一个或多个
jobs
组成,默认情况下并行运行。 若要按顺序运行作业,可以使用jobs.<job_id>.needs
关键字定义对其他作业的依赖关系。
例如我写的
1 | name: Build and Publish Release # 工作流名称 |
上面的
- SERVER_FILE
- SERVER_HOST
- SERVER_USERNAME
- SSH_KEY
- TOKEN
其中 这些都在仓库设置的机密设置进行设置,你也可以自己按需修改名字。
引用
我自己的GitHub 仓库:https://github.com/biliblihuorong/Bicarbon-MES
GitHub Actions官方文档:https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions
阮一峰大佬的 GitHub Actions 博文:https://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html
以及Chat GPT的大力协助。