首页 > 其他分享 >自动化开发流程:使用 GitHub Actions 进行 CI/CD

自动化开发流程:使用 GitHub Actions 进行 CI/CD

时间:2024-08-26 19:53:27浏览次数:9  
标签:CI GitHub run name Actions CD

在现代软件开发过程中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)是确保高质量软件交付的关键组成部分。GitHub Actions 提供了一种简便的方式来实现 CI/CD 流程的自动化。本文将介绍如何设置和使用 GitHub Actions 来自动化你的项目部署流程。

在这里插入图片描述

什么是 GitHub Actions?

GitHub Actions 是一种自动化工作流工具,可以让你定义一系列任务,这些任务在特定事件触发时自动执行。它非常适合用于 CI/CD,因为它可以自动运行测试、构建应用、部署到服务器等。

设置 GitHub Actions

  1. 创建仓库

    • 登录到你的 GitHub 账户并创建一个新的仓库。
  2. 编写 .github/workflows 文件夹

    • 在你的仓库根目录下创建 .github/workflows 文件夹。
    • 在该文件夹中创建一个 YAML 文件,通常命名为 ci.ymldeploy.yml
  3. 编写工作流文件

    • 编写 YAML 文件来定义工作流的步骤。下面是一个简单的例子:
    name: CI/CD Pipeline
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout Repository
            uses: actions/checkout@v3
    
          - name: Setup Node.js
            uses: actions/setup-node@v3
            with:
              node-version: '16'
    
          - name: Install Dependencies
            run: npm install
    
          - name: Run Tests
            run: npm test
    
          - name: Build Application
            run: npm run build
    
          - name: Deploy to Production Server
            uses: easingthemes/[email protected]
            with:
              ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
              remote-host: example.com
              remote-user: deploy_user
              source-directory: ./dist/
              target-directory: /var/www/html/app/
    
  4. 配置敏感信息

    • 将任何敏感信息(如 SSH 密钥)存储在 GitHub 的 Secrets 中,并在工作流文件中引用它们。
  5. 测试工作流

    • 推送更改到仓库以触发工作流。

自动化测试

在 CI/CD 流程中,自动化测试是至关重要的。GitHub Actions 可以轻松地集成各种测试框架。例如,如果你使用的是 Node.js,你可以这样运行 Jest 测试:

- name: Run Tests
  run: npm run test

部署到生产环境

一旦测试通过,你可以使用多种方法将应用部署到生产环境中。例如,使用 SSH 部署到远程服务器:

- name: Deploy to Production Server
  uses: easingthemes/[email protected]
  with:
    ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
    remote-host: example.com
    remote-user: deploy_user
    source-directory: ./dist/
    target-directory: /var/www/html/app/

结论

通过使用 GitHub Actions,你可以轻松地实现 CI/CD 流程的自动化。这不仅可以提高开发效率,还可以减少人为错误。希望这篇文章对你有所帮助,如果你有任何问题或反馈,请随时留言!

标签:CI,GitHub,run,name,Actions,CD
From: https://blog.csdn.net/2302_82029124/article/details/141500357

相关文章

  • [USACO16DEC] Cities and States S
    [USACO16DEC]CitiesandStatesS题目描述FarmerJohn有若干头奶牛。为了训练奶牛们的智力,FarmerJohn在谷仓的墙上放了一张美国地图。地图上表明了每个城市及其所在州的代码(前两位大写字母)。由于奶牛在谷仓里花了很多时间看这张地图,他们开始注意到一些奇怪的关系。例如,FLIN......
  • Typora 上传到 Github 实现笔记同步管理
    首先在Github上new一个repository,我建的名称是md_notes然后在本地terminal中启动以下命令新建一个sshkey  ssh-keygen-o  生成的publickey就是我们需要的东西,接着再输入catC:\Users\ASUS/.ssh/id_rsa.pub就能获取到生成的密钥复制生成的密钥(两个......
  • el-input-number设置精度precision=2,输入2自动变成了2.00怎么办?
    问题背景项目:vue2+elementui老板说:有一个需求,这个输入框最多输入4位数,如果有小数的话,最多输入4位小数,能做吗?我说:“能!”然后我就兴冲冲地做了起来。我一想:“这个直接用el-input-number写不就好了吗”然后我设置了:(最大值9999,精度设置为4,即保留4位小数)<el-input-num......
  • Vue-cil(脚手架,版本:2.6.10)的搭建过程(项目创建,组件路由)
    目录一.前端项目结构的对比  1.传统的前端项目结构  2.现在的前端项目结构 二.什么是vue-cil三.主要的功能四.需要的环境(前提)  1.Node.js  2.npm  3.使用HbuilderX快速搭建​五.常用命令六.创建项目的需要  1.创建组件      ......
  • 网站提示507 Insufficient Storage:服务器无法存储完成请求所需的内容怎么办
    当遇到“507InsufficientStorage”错误时,这意味着服务器无法存储完成请求所需的内容,通常是由于磁盘空间不足或资源限制。这种错误通常出现在服务器端,特别是在存储资源有限的环境中。解决方案检查服务器磁盘空间如果你是服务器管理员,检查服务器的磁盘空间。确认是否有足够......
  • MIXLORA: Enhancing Large Language Models Fine-Tuning with LoRA-based Mixture of
    本文是LLM系列文章,针对《MIXLORA:EnhancingLargeLanguageModelsFine-TuningwithLoRA-basedMixtureofExperts》的翻译。MIXLORA:通过基于LoRA的专家混合来增强大型语言模型的微调摘要1引言2相关工作3MIXLORA4实验5结论摘要微调大型语言模型(LLM)......
  • C++类和对象(下):初始化列表、explicit关键字、友元函数、友元类
    文章目录C++类和对象9、初始化列表9.1构造函数体赋值9.2初始化列表9.3explicit(显示)关键字10、友元10.1友元函数10.2友元类C++类和对象9、初始化列表一个类的构造函数要初始化成员变量有两种方式,一种是构造函数体赋值,另一种是初始化列表。9.1构造函数体赋值......
  • 推荐2款实用的持续集成与部署(CI&CD)自动化工具
    前言最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2款实用且免费的持续集成与部署(CI&CD)自动化工具,希望可以帮助到有需要的同学。持续集成与部署工具的作用持续集成(CI)和持续交付/部署(CD)自动化工具是用于实现......
  • 题解:P7401 [COCI2020-2021#5] Planine
    题意现有一座上下起伏的山。它可以抽象为一个包含\(n\)(\(n\)为奇数)个点\((x_i,y_i)\)以及\((x_1,-\inf)\)与\((x_n,-\inf)\)的多边形。对于所有满足\(i\neq1\),\(i\neqn\),\(i\bmod2=1\)的整数\(i\),\((x_i,y_i)\)都是山谷。现要放置若干个高度为\(h\)的点光......
  • 2024 National Invitational of CCPC (Zhengzhou), 2024 CCPC Henan Provincial Colle
    目录F优秀字符串J排列与合数H随机栈M有效算法AOnceInMyLifeB扫雷1LToxel与PCPCIIK树上问题D距离之比C中二病也要打比赛G扫雷2F优秀字符串签到,速杀。J排列与合数其实也是签到。全奇数情况的答案样例给了,含偶数的情况把偶数放最后即可。因为细节挂了两发......