×

/GitHub-Actions/

1 个文件夹 9 个文件 总计 96 KiB
列表 网格
名称
大小 更新时间
返回上级目录
img/
build-opengnb.yml
12 KiB
dufs-github云编译.yml
16 KiB
github机器配置输出.yml
7.0 KiB
README.md
10 KiB
sshpass-github云编译.yml
4.5 KiB
tinc-mipsel-github云编译.yml
4.4 KiB
udp2raw-github云编译.yml
5.1 KiB
云编译配置.png
32 KiB
记录调用工作流的方法.md
4.2 KiB

记录学到的GitHub云编译方法

目录

云编译模板介绍

1️⃣ 首先是一个模板名 name: , 多个编译模板的时候可以用来区分

name: 流程名称

2️⃣ 然后是执行方式 on: 支持多种方式触发执行

①手动触发:workflow_dispatch:

展开
name: 我的流程1

on:
#手动触发执行
  workflow_dispatch:

里面的#是用来注释的 不会生效,也不会影响执行,方便标识用的

手动触发执行并指定一些参数inputs:
如下的 branch upx target 等 表示输入的值的变量名

name: 我的流程1

on:
#手动触发执行并指定一些参数
  workflow_dispatch:
    inputs:
      branch:
        description: '指定编译的版本号'
	# false 表示这个参数的值可留空,若要求不能留空 则使用 true 必须填入一些字符
        required: false
        default: ''
      upx:
        description: '是否使用upx压缩'
	#这是开关选项 勾选框
        required: true
        default: false
        type: boolean
      target:
        description: '请选择架构'
	#这是预设选项框 单选
        required: true
        type: choice
        default: 'aarch64'
        options:
          - aarch64
          - armv7
          - armv6
          - armv5
      core_run_id:
        description: '请输入ID'
	#这是限制只能输入数字
        type: number
        default: 10322498549
        required: true

②定时自动触发:schedule: 使用的是cron语法

展开
name: 我的流程1

on:
#每天北京时间(+8)11点 04点自动检测更新
  schedule:
   - cron: "0 3,20 * * *"

③修改仓库文件自动触发:

展开

push: 当有代码被推送到指定的分支或修改了文件时触发

name: 我的流程1

on:
# 当修改 main 分支的内容时自动执行该流程
  push:
    branches:
       - main

pull_request: 当创建或更新拉取请求(PR)时触发

name: 我的流程1

on:

# 当 main test 分支创建或更新拉取请求(PR)时触发
  pull_request:
    branches: ["main", "test"]

3️⃣ 设置此流程的全局权限 permissions: 简单的流程无需设置

展开
name: 我的流程1

on:
  workflow_dispatch:

permissions:
  contents: write

⚠️ 以下是一些可选项:

permissions:
  # Actions 工作流相关权限
  actions: 
    # read 仅允许读取工作流运行信息,例如查看工作流状态
    # write 允许操作工作流运行,例如重新运行或取消工作流

  # 检查运行相关权限
  checks:
    # read 仅允许读取检查运行状态
    # write 允许重新运行或更新检查

  # 仓库内容访问权限
  contents:
    # read 允许读取仓库内容,例如克隆代码
    # write 允许推送更改到仓库
    none: # 禁止访问仓库内容

  # 部署相关权限
  deployments:
    # read 允许查看部署信息
    # write 允许触发和操作部署

  # Discussions 讨论区相关权限
  discussions:
    # read 允许查看讨论内容
    # write 允许创建或更新讨论

  # Issues 问题(Issues)相关权限
  issues:
    # read 允许查看问题列表和详情
    # write 允许创建、更新或关闭问题

  # Packages 包管理相关权限
  packages:
    # read 允许下载包或查看包信息
    # write 允许上传、删除或更新包

  # Pull Requests 拉取请求相关权限
  pull-requests:
    # read 允许查看拉取请求信息
    # write 允许创建、更新或合并拉取请求

  # 仓库项目相关权限
  repository-projects:
    # read 允许查看项目内容
    # write 允许管理和更新项目

  # 安全事件相关权限
  security-events:
    # read 允许查看安全事件
    # write 允许创建和更新安全事件

  # 提交状态相关权限
  statuses:
    # read 允许查看提交状态
    # write 允许更新提交状态

发布Releases版本 提交修改到仓库 需要使用 contents: write 权限
删除工作流记录 需要用到 actions: write 等,一般需要加 因为默认的设置是read

4️⃣ 设置全局的环境变量 env:

展开

设置时区上海 TZ的值

name: 我的流程1

on:
  workflow_dispatch:

env:
  TZ: Asia/Shanghai

甚至可以把之前触发里的手动输入的参数也设置为全局变量 github.event.inputs.名称

输出测试效果

5️⃣ 正式流程内容 jobs:

name: 我的流程1

on:
  workflow_dispatch:

env:
  TZ: Asia/Shanghai

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: 输出helloworld
        run: |
          echo "Hello World !"
          echo "多个命令演示"

  build2:
    runs-on: windows-latest
    steps:
      - name: 输出helloworld
        run: echo "Hello World !"

  build3:
    runs-on: macos-latest
    steps:
      - name: 输出helloworld
        run: echo "Hello World !"

build: 表示作业名 可以多个 build1: test: 等等,不支持中文, 不同的功能 缩进位置也都不同

runs-on: 表示这个作业需要运行的系统

大概可选的系统有
  1. Ubuntu
  • ubuntu-latest : 当前最新版本的 Ubuntu(通常是最新 LTS 版本)
  • ubuntu-22.04 : Ubuntu 22.04 LTS
  • ubuntu-20.04 : Ubuntu 20.04 LTS
  • ubuntu-18.04 : Ubuntu 18.04 LTS
  1. Windows
  • windows-latest : 当前最新版本的 Windows Server(通常是 Windows Server 2022)
  • windows-2022 : Windows Server 2022
  • windows-2019 : Windows Server 2019
  • windows-2016 : Windows Server 2016
  1. macOS
  • macos-latest : 当前最新版本的 macOS(通常是 macOS Ventura)
  • macos-13 : macOS 13 (Ventura)
  • macos-12 : macOS 12 (Monterey)
  • macos-11 : macOS 11 (Big Sur)

steps: 表示步骤执行 后续代码要按顺序来执行

步骤示例
jobs:
  build:
    runs-on: ubuntu-latest  # 选择运行环境
    steps:
	#设置了四个步骤
      - name: Checkout 代码
        uses: actions/checkout@v4  # 获取仓库代码

	#步骤二
      - name: 设置 Python 环境
        uses: actions/setup-python@v2  # 安装指定版本的 Python
        with:
          python-version: '3.8'

	#步骤三
      - name: 安装依赖
        run: pip install -r requirements.txt  # 执行命令安装依赖

	#步骤四
      - name: 运行测试
        run: pytest  # 执行测试

更多步骤可以参考别人的 GitHub 里的 .github/workflows/ 目录里的 yml 文件,大胆 复制 粘贴 😆

上方提供的几个yml 可以参考一下,同样也复制粘贴而来🤓


新建一个仓库

展开

先登陆自己的GitHub帐号,然后点击右上角的 +

然后填写仓库的一些信息

另外除了fork 还可以自己创建仓库的时候 导入被人的仓库代码

新仓库创建好之后 需要上传文件或者新建一个文件

新建一个yml云编译模板

展开

可以在这里点击新建或者上传

GitHub的云编译必须要把yml模板文件放至.github/workflows/目录下才行 .github/workflows/我的编译模板.yml

如果你是上传的,上传到仓库根目录也不怕,点击文件进去,点编辑,修改名字将文件夹加进去

如文件名是 我的编译模板.yml 重命名为 .github/workflows/我的编译模板.yml 即可

修改yml模板文件格式,必须全文没有出现红色 ﹏﹏ 和红色 ˇ

创建仓库的token

展开

这个token是应用于所有仓库的高权限,一般不需要,常用的编译 直接使用GitHub默认生成的token即可

先登录帐号进去,点击右上角的头像

然后点击左侧菜单栏 最底部的

新建一个token,设置永不过期,勾选所有权限,详细可以百度搜索不再详细了
我设置的是永不过期 所有仓库有效 最高权限

创建仓库的环境变量

展开

点击进入当前仓库的设置页面

可以创建多个,用来在执行云编译的时候使用这个环境变量来隐藏私密信息,不会显示在日志里