• 一文掌握GitHub Actions基本概念与配置


    CI/CD包含很多流程,如拉取代码、测试、构建打包、登录远程服务器、部署发布等等。
    而Github Actions是GitHub推出的一个CI/CD工具,类似工具还有TravisCI、Jenkins等

    在GitHub Actions中,每个独立的脚本就是一个action,这些action可以复用,参考官方action市场

    Github Actions 基本概念

    • workflow 工作流
    • on 触发条件
    • job 任务
    • step 步骤
    • action 动作
    • 环境变量

    workflow 工作流
    一个工作流代表一次持续集成的过程
    对于GitHub Actions,脚本以yml文件的方式编写,并约定存储在项目的.github/workflows文件夹下
    一个项目可以有多个workflow

    on 触发条件
    比如依赖github push 触发脚本执行,push指定某个/某些分支触发,还可以指定push tag时触发等等

    job 任务
    一个workflow可以包含多个任务
    一个 workflow 由一个或多个 job 构成,含义是一次持续集成的运行,可以完成多个任务。
    job之间可以使用need形成依赖关系

    jobs:
      job1:
      job2:
        needs: job1
      job3:
        needs: [job1, job2]
    

    如 job2必须等待job1完成,job3需要在job1,job2都完成之后才执行

    step 步骤
    一个job可以包含多个步骤,一步步完成
    step 表示要做的步骤,前一步失败,后面不会继续执行。

    action 动作
    一个步骤可以一次执行一个或者多个命令
    一个 action有name、uses、with 等配置项
    name 表示 action 的名称,uses 表示使用哪个插件,with 表示传给插件的参数。

    环境变量
    用户可以自定义环境变量
    配置在仓库设置里面的 secrets 菜单栏中,使用secrets.XXX 读取XXX 本仓库的环境变量

    一个GitHub Actions demo

    结合上面的概念以及注释理解

    name: Deploy GitHub Pages
    
    # 触发条件:在 push 到 master 分支后
    on:
      push:
        branches:
          - master
    
    # 任务
    jobs:
      build-and-deploy:
        # 服务器环境:最新版 Ubuntu
        runs-on: ubuntu-latest
        steps:
          # 拉取代码
          - name: Checkout
            uses: actions/checkout@v2
            with:
              persist-credentials: false
    
          # 1、生成静态文件
          - name: Build
            run: npm install && npm run build
    
          # 2、部署到 GitHub Pages
          - name: Deploy
            uses: JamesIves/github-pages-deploy-action@releases/v3
            with:
              ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
              REPOSITORY_NAME: somenzz/somenzz.github.io
              BRANCH: master
              FOLDER: public
              #注意这里的 public 是仓库根目录下的 public,也就是 npm run build 生成静态资源的路径,比如有的人是 `docs/.vuepress/dist`
    
          # 3、同步到 gitee 的仓库
          - name: Sync to Gitee
            uses: wearerequired/git-mirror-action@master
            env:
              # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
              SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
            with:
              # 注意替换为你的 GitHub 源仓库地址
              source-repo: git@github.com:somenzz/somenzz.github.io.git
              # 注意替换为你的 Gitee 目标仓库地址
              destination-repo: git@gitee.com:somenzz/somenzz.git
    
          # 4、部署到 Gitee Pages
          - name: Build Gitee Pages
            uses: yanglbme/gitee-pages-action@main
            with:
              # 注意替换为你的 Gitee 用户名
              gitee-username: island
              # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
              gitee-password: ${{ secrets.GITEE_PASSWORD }}
              # 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
              gitee-repo: somenzz/somenzz
              # 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在)
              branch: master
    
          # 5、部署到 xxxx.cn服务器
          - name: rsync deployments
            uses: burnett01/rsync-deployments@4.1
            with:
              # 这里是 rsync 的参数 switches: -avzh --delete --exclude="" --include="" --filter=""
              switches: -avzh
              path: public/
              remote_path: /home/ubuntu/public/
              remote_host: xxxx.cn
              remote_port: 22
              remote_user: ubuntu
              remote_key: ${{ secrets.MY_UBUNTU_RSA_PRIVATE_KEY }}
    
  • 相关阅读:
    javaweb羽毛球俱乐部体育场地预约管理系统maven-ssm项目
    电脑小白也能修电脑?这几个维修技巧快记住
    区块链技术的应用场景和优势
    使用jupyter的一些常识
    房产新闻查询易语言代码
    java实现线程安全的三种方式
    6 个超级良心的开源教程!
    TensorBoard——Pytorch版使用(附带案例演示)
    Hive (七) --------- 分区表和分桶表
    云安虚拟化应用性能监测系统—应用异常检测
  • 原文地址:https://www.cnblogs.com/ltfxy/p/16347777.html