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

打印 上一主题 下一主题

主题 1036|帖子 1036|积分 3108

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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形成依赖关系
  1. jobs:
  2.   job1:
  3.   job2:
  4.     needs: job1
  5.   job3:
  6.     needs: [job1, job2]
复制代码
如 job2必须等待job1完成,job3需要在job1,job2都完成之后才执行
step 步骤
一个job可以包含多个步骤,一步步完成
step 表示要做的步骤,前一步失败,后面不会继续执行。
action 动作
一个步骤可以一次执行一个或者多个命令
一个 action有name、uses、with 等配置项
name 表示 action 的名称,uses 表示使用哪个插件,with 表示传给插件的参数。
环境变量
用户可以自定义环境变量
配置在仓库设置里面的 secrets 菜单栏中,使用secrets.XXX 读取本仓库的环境变量
一个GitHub Actions demo

结合上面的概念以及注释理解
  1. name: Deploy GitHub Pages
  2. # 触发条件:在 push 到 master 分支后
  3. on:
  4.   push:
  5.     branches:
  6.       - master
  7. # 任务
  8. jobs:
  9.   build-and-deploy:
  10.     # 服务器环境:最新版 Ubuntu
  11.     runs-on: ubuntu-latest
  12.     steps:
  13.       # 拉取代码
  14.       - name: Checkout
  15.         uses: actions/checkout@v2
  16.         with:
  17.           persist-credentials: false
  18.       # 1、生成静态文件
  19.       - name: Build
  20.         run: npm install && npm run build
  21.       # 2、部署到 GitHub Pages
  22.       - name: Deploy
  23.         uses: JamesIves/github-pages-deploy-action@releases/v3
  24.         with:
  25.           ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
  26.           REPOSITORY_NAME: somenzz/somenzz.github.io
  27.           BRANCH: master
  28.           FOLDER: public
  29.           #注意这里的 public 是仓库根目录下的 public,也就是 npm run build 生成静态资源的路径,比如有的人是 `docs/.vuepress/dist`
  30.       # 3、同步到 gitee 的仓库
  31.       - name: Sync to Gitee
  32.         uses: wearerequired/git-mirror-action@master
  33.         env:
  34.           # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY
  35.           SSH_PRIVATE_KEY: ${{ secrets.GITEE_RSA_PRIVATE_KEY }}
  36.         with:
  37.           # 注意替换为你的 GitHub 源仓库地址
  38.           source-repo: git@github.com:somenzz/somenzz.github.io.git
  39.           # 注意替换为你的 Gitee 目标仓库地址
  40.           destination-repo: git@gitee.com:somenzz/somenzz.git
  41.       # 4、部署到 Gitee Pages
  42.       - name: Build Gitee Pages
  43.         uses: yanglbme/gitee-pages-action@main
  44.         with:
  45.           # 注意替换为你的 Gitee 用户名
  46.           gitee-username: island
  47.           # 注意在 Settings->Secrets 配置 GITEE_PASSWORD
  48.           gitee-password: ${{ secrets.GITEE_PASSWORD }}
  49.           # 注意替换为你的 Gitee 仓库,仓库名严格区分大小写,请准确填写,否则会出错
  50.           gitee-repo: somenzz/somenzz
  51.           # 要部署的分支,默认是 master,若是其他分支,则需要指定(指定的分支必须存在)
  52.           branch: master
  53.       # 5、部署到 xxxx.cn服务器
  54.       - name: rsync deployments
  55.         uses: burnett01/rsync-deployments@4.1
  56.         with:
  57.           # 这里是 rsync 的参数 switches: -avzh --delete --exclude="" --include="" --filter=""
  58.           switches: -avzh
  59.           path: public/
  60.           remote_path: /home/ubuntu/public/
  61.           remote_host: xxxx.cn
  62.           remote_port: 22
  63.           remote_user: ubuntu
  64.           remote_key: ${{ secrets.MY_UBUNTU_RSA_PRIVATE_KEY }}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表