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

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 CI

on:
  push:
    branches: [ master ]
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      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@v2
      with:
        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 server
        uses: easingthemes/ssh-deploy@main
        env:
            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@7c5145f0b707e9a1d7b7e71cf1812fcec2228fb5
        uses: potaesm/github-actions-request@1.0.7
        with:
            # `url` is the server URL that will be used for the request
            url: ${{ secrets.REQUEST_URI }}${{ job.status }}
            # `method` is the request method to be used when making the request
            method: get

五,Action的Security

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

这时就需要secrets了

打开Github仓库页面,进入Setting

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

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

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

- name: Deploy to Staging server
      uses: easingthemes/ssh-deploy@main
      env:
        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

别忘了关注➕,点赞👍,收藏💖,订阅📰, o(())o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值