GitHub也能CI/CD了!如何使用GitHub的Action?

一,什么是CI/CD

见另一篇文章

二,GitHub的Action

GitHub的Action是一种自动化的CI/CD工具,可以让你在GitHub上自动执行一些指令,比如构建、部署、推送代码等。

不光如此,在触发action之后,相当于我们有了一个暂时的服务器,用这个甚至可以白嫖一些计算资源

三,GitHub Actions 的使用方法

  1. 建立目录文件

.github/workflows/

在这个目录下建立一个名为name.yml的文件,内容如下:

name: Node.js CIon:push:branches: [ master ]
jobs:build:runs-on: ubuntu-lateststrategy:matrix:node-version: [ 16.x]# See supported Node.js release schedule at https://nodejs.org/en/about/releases/steps:- uses: actions/checkout@v2- name: Use Node.js ${{ matrix.node-version }}uses: actions/setup-node@v2with:node-version: ${{ matrix.node-version }}cache: 'npm'- run: npm ci- run: npm publish

这个脚本会在每次git push 时自动执行“npm publish”

下面会解释一下用法

on

on 指的是在哪个事件触发时执行,这里是在master git push 时执行

其他常见的还有 pull_request 等等

jobs

jobs 是一系列动作的集合

这里定义了一个build的动作

之后又对build进行了描述

runs-on 指定了这个动作在哪个系统上执行

strategy:matrix:node-version: [ 16.x]

这些定义了一个预定义的环境,在这个环境中有node,可以运行node命令

steps

steps具体描述了该怎么执行脚本

而use是使用了别人已经预先定义好的脚本,这里的actions/checkout@v2就是一个把仓库拉取到最新的脚本

我们将仓库拉到最新后就直接运行

npm ci
npm publish

这样,就会在每次git tag 时自动执行npm publish

四,GitHub Actions的常见流程

一般的CI/CD流程是:

拉取代码 -> 构建 -> 测试 -> 推送代码或者部署

这里提供几个常用的

拉取

    - uses: actions/checkout@v2

部署

    - name: Deploy to Staging serveruses: easingthemes/ssh-deploy@mainenv:SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}SOURCE: "docs/.vuepress/dist/"REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}REMOTE_USER: ${{ secrets.DEPLOY_USER }}TARGET: ${{ secrets.DEPLOY_REMOTE_DIR }}

发送Http请求

    - name: Axios Request# You may pin to the exact commit or the version.# uses: potaesm/github-actions-request@7c5145f0b707e9a1d7b7e71cf1812fcec2228fb5uses: potaesm/github-actions-request@1.0.7with:# `url` is the server URL that will be used for the requesturl: ${{ secrets.REQUEST_URI }}${{ job.status }}# `method` is the request method to be used when making the requestmethod: get

五,Action的Security

当我们需要执行一些设计账号密码的操作的时候,就需要把这些信息隐藏起来。因为yml文件别人是可以看到的。

这时就需要secrets了

打开Github仓库页面,进入Setting

找到Secrets选项,在这个页面中,我们可以添加一个secret,这个secret就是我们需要的密码,

可以自定义名称和内容,这个内容别人是看不到的

之后,我们就可以在脚本中引入

- name: Deploy to Staging serveruses: easingthemes/ssh-deploy@mainenv:SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}SOURCE: "docs/.vuepress/dist/"REMOTE_HOST: ${{ secrets.DEPLOY_HOST }}REMOTE_USER: ${{ secrets.DEPLOY_USER }}TARGET: ${{ secrets.DEPLOY_REMOTE_DIR }}

这里使用了一个别人写好的脚本,可以把构建好的部署到服务器上,就是deploy的过程

${{ secrets.SERVER_SSH_KEY }}就是我们的私钥,这个私钥是我们在github上添加的,

${{ secrets.DEPLOY_HOST }}就是服务器的地址,

这样,我们可以在代码tag之后,就自动把构建产物部署到服务器上!

Last But Not Least

别忘了关注➕,点赞

GitHub也能CI/CD了 如何使用GitHub的Action?相关推荐

  1. 如何能在git bash中使用mvn命令_使用Github Actions完成CI/CD工作

    在本文中,我们将介绍如何使用 Github Actions 自动化开发部署工作流,使版本控制和 CI/CD 平台在同一个地方完成. 自2019年开始,github便提供了CI/CD工具,对于publi ...

  2. github使用指南_所有开源项目免费使用,GitHub 内置 CI/CD 终于来了

    2019 年 8 月 8 日,GitHub 官方博客发文称,程序员期待已久的功能来了,Github Actions 终于支持内置 CI/CD 了,并对所有开源项目免费!目前该功能可以在 Beta 版本 ...

  3. 所有开源项目免费使用,GitHub 内置 CI/CD 终于来了!

    作者丨田晓旭 来源丨InfoQ 2019 年 8 月 8 日,GitHub 官方博客发文称,程序员期待已久的功能来了,Github Actions 终于支持内置 CI/CD 了,并对所有开源项目免费! ...

  4. GitHub免费支持CI/CD了,开发测试部署高度自动化,支持各种语言,网友:第三方凉凉...

    郭一璞 栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI GitHub激动地宣布,终于支持CI/CD了. CI\CD,全称:持续集成 (Continuous Integration) ,持续 ...

  5. 【壹个小技巧】一看就会的CI/CD :Github Actions

    什么是 CI/CD? 我这里先不说概念,先说一个平时开发的场景问题: 我们平时开发一个项目,经常会遇到这些"小"问题: 就是如何保证自己的项目是正确的,至少拿给别人的时候,可以编译 ...

  6. 最佳实践 | 如何基于GitHub Actions创建 DolphinScheduler Python API的CI/CD?

    点亮 ⭐️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 01. DolphinScheduler 和 Python API 介绍 ...

  7. SAP 电商云 Spartacus UI 的单元测试和端到端测试,以及 CI/CD 相关话题

    单元测试 在项目根目录的 package.json 下面,定义了测试相关的 script: 可以直接 npm run test:libs, 启动所有库的单元测试: 也可以手动执行单个库的单元测试,例如 ...

  8. 单元测试 CI/CD

    目录 前言 1 CI/CD 1.1 什么是 CI 1.2 什么是 CD 1.3 CI/CD 流程 2 CI 平台选择 2.1 Github Actions 2.2 Jenkins 2.3 Github ...

  9. 基于 GitLab CI 的前端工程CI/CD实践

    CI/CD 是 Gitlab 提供的一整套持续集成.持续交付解决方案. 概念:「持续集成(Continuous Integration)」.「持续交付(Continuous Delivery)」和「持 ...

最新文章

  1. iscroll 滚动刷新
  2. [git/svn]Git和SVN差异
  3. 云原生应用如何做到低成本获得高稳定?
  4. C++ BUILDER 消息处理的深入探索
  5. 给中国学生的第五封信 – 你有选择的权利
  6. 机器学习笔记(十二):聚类
  7. maven 公共模块依赖_idea 创建多模块依赖Maven项目
  8. nvidia.dali:深度学习加速神器!
  9. css-bootstrap的安装与使用
  10. 帮助罕见病患者买得到药 京东健康上线“罕见病关爱中心”
  11. 2021年,开发者们如何拥抱 5G 消息?
  12. excel文件修复工具_psd文件修复工具下载|Recovery Toolbox for ps 最新版v2.3.1.0 下载
  13. 2021年MEMS传感器产业链变化与趋势
  14. 解决Jenkins一直用户名或密码错误
  15. UE4 Spline
  16. SYSLINUX 6.03不支持64bit的ext4
  17. Android10支持ntfs格式u盘
  18. 一文到胃------合并(归并)排序原理
  19. Java中的Enum的简单使用
  20. python猴子分桃问题_用python实现【五猴分桃】问题

热门文章

  1. android悬浮按钮组件
  2. 非线性方程求解 不动点迭代法
  3. Vs Code使用国际化多语言插件-i18n AllyVue i18n-插件使用
  4. avue中地图使用实现地图的联动_7.1地图组件
  5. 华为桌面云 服务器可以虚拟多少,一个桌面云服务器支持多少用户
  6. 嵌入式相关开源项目、库、资料------持续更新中
  7. 迷你WiFi摄像机需要多少兆的带宽才不会卡顿
  8. 高阶Day1:面向对象,面向过程,类和对象的属性和方法创建
  9. 未来软件园:Rom助手如何呵护刷机的未来
  10. [Kali]安装360随身Wifi-3代驱动(失败)