• 一文掌握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.XXX 这个 XXX 表示本仓库的环境变量,配置在仓库设置里面的 secrets 菜单拦,都是加密的。

    一个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、部署到 somenzz.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: somenzz.cn
              remote_port: 22
              remote_user: ubuntu
              remote_key: ${{ secrets.MY_UBUNTU_RSA_PRIVATE_KEY }}
    
  • 相关阅读:
    操作系统的安装与启动基本原理
    Arch linux安装
    18 个最佳代码编辑器/IDE推荐
    2011年排名前七位的Linux操作系统。
    十大流行linux
    Java中浮点型数据Float和Double进行精确计算的问题
    Inside JVM 内存模型
    java常见面试题及答案
    Java内存模型
    虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/ltfxy/p/16347777.html
Copyright © 2020-2023  润新知