网站建设的基本流程图,网站开发课程设计报告,学校网站建设讯息,wordpress 取消注册邮件1#xff0c;简介 GitHub Actions 是 GitHub 的一个自动化功能#xff0c;它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务#xff0c;比如#xff1a;
自动测试#xff1a;每当代码被推送到仓库时#xff0c;自动运行测试…1简介 GitHub Actions 是 GitHub 的一个自动化功能它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务比如
自动测试每当代码被推送到仓库时自动运行测试来确保代码质量。持续集成自动构建和部署代码确保新的代码更改不会破坏现有功能。代码格式化自动格式化代码以保持代码风格的一致性。自动部署将代码部署到服务器或云平台。自动化发布自动创建版本发布和更新软件包。监控监控应用程序和基础设施以确保它们正常运行。自动化工作流创建复杂的工作流以自动化多个步骤和任务。
GitHub Actions 通过定义在 .github/workflows 目录中的 YAML 文件来配置。这些工作流可以触发于各种事件如推送、拉取请求、定时任务等。你可以使用 GitHub 提供的预设操作actions也可以创建自己的自定义操作。 2如何使用action
使用 GitHub Actions 来自动化你的工作流程涉及几个步骤下面是基本的流程 创建工作流文件 在你的 GitHub 仓库中找到或创建一个名为 .github/workflows 的目录。在这个目录下创建一个新的 YAML 文件来定义你的工作流。文件名可以是任意的但必须以 .yml 或 .yaml 结尾。 定义工作流内容 工作流文件的基本结构包括触发器on、作业jobs和步骤steps。触发器定义了何时运行工作流例如当代码被推送到仓库时。作业是工作流中的一个执行单元它可以包含多个步骤。步骤是作业中的单个任务比如运行脚本或使用操作action。 使用操作Actions 操作是 GitHub Actions 的核心它们是可重用的代码片段用于执行特定的任务。你可以使用社区提供的现成操作或者创建自己的操作。在步骤中通过 uses 关键字指定要运行的操作。 配置工作流 你可以配置工作流以使用不同的环境变量、设置权限、使用不同的运行器如不同的操作系统或硬件配置等。 运行工作流 一旦你推送了工作流文件到仓库工作流就会根据你定义的触发器自动运行。你可以在 GitHub 仓库的 Actions 标签页中查看工作流的运行状态和历史。 调试和修改 如果工作流运行失败你可以查看日志来调试问题。根据需要调整工作流文件然后再次推送以测试更改 下面是一个简单的 GitHub Actions 工作流示例它在每次推送到 main 分支时运行一个简单的 Node.js 脚本 name: Node.js CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Use Node.js uses: actions/setup-nodev3 with: node-version: 14 - run: npm ci - run: npm run build 在这个例子中
name 定义了工作流的名称。on 指定了触发工作流的事件这里是 push 事件。jobs.build 定义了一个名为 build 的作业。runs-on 指定了运行作业的虚拟机环境。steps 定义了作业中的步骤包括检出代码、设置 Node.js 环境、安装依赖和构建项目。
3 实例
以下是一个编译Android13的工作流 name: Build Kernel - Android 13 on: push: branches: [main, ci, checkci] paths: - .github/workflows/build-kernel-a13.yml - .github/workflows/gki-kernel.yml - .github/scripts/build_a13.sh - kernel/** pull_request: branches: [main] paths: - .github/workflows/build-kernel-a13.yml - .github/workflows/gki-kernel.yml - .github/scripts/build-a13.sh - kernel/** workflow_call: jobs: build-kernel: if: github.event_name ! pull_request github.ref ! refs/heads/checkci strategy: matrix: include: - version: 5.10 sub_level: 189 os_patch_level: 2023-11 - version: 5.10 sub_level: 198 os_patch_level: 2024-01 - version: 5.10 sub_level: 205 os_patch_level: 2024-03 - version: 5.10 sub_level: 209 os_patch_level: 2024-05 - version: 5.10 sub_level: 210 os_patch_level: 2024-06 - version: 5.10 sub_level: 214 os_patch_level: 2024-07 - version: 5.10 sub_level: 218 os_patch_level: 2024-08 - version: 5.15 sub_level: 123 os_patch_level: 2023-11 - version: 5.15 sub_level: 137 os_patch_level: 2024-01 - version: 5.15 sub_level: 144 os_patch_level: 2024-03 - version: 5.15 sub_level: 148 os_patch_level: 2024-05 - version: 5.15 sub_level: 149 os_patch_level: 2024-07 - version: 5.15 sub_level: 151 os_patch_level: 2024-08 uses: ./.github/workflows/gki-kernel.yml secrets: inherit with: version: android13-${{ matrix.version }} version_name: android13-${{ matrix.version }}.${{ matrix.sub_level }} tag: android13-${{ matrix.version }}-${{ matrix.os_patch_level }} os_patch_level: ${{ matrix.os_patch_level }} patch_path: ${{ matrix.version }} upload-artifacts: needs: build-kernel runs-on: ubuntu-latest if: ${{ ( github.event_name ! pull_request github.ref refs/heads/main ) || github.ref_type tag || github.ref refs/heads/ci }} env: CHAT_ID: ${{ secrets.CHAT_ID }} BOT_TOKEN: ${{ secrets.BOT_TOKEN }} MESSAGE_THREAD_ID: ${{ secrets.MESSAGE_THREAD_ID }} COMMIT_MESSAGE: ${{ github.event.head_commit.message }} COMMIT_URL: ${{ github.event.head_commit.url }} RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} steps: - name: Download artifacts uses: actions/download-artifactv4 - uses: actions/checkoutv4 with: path: KernelSU fetch-depth: 0 - name: List artifacts run: | tree - name: Download prebuilt toolchain run: | AOSP_MIRRORhttps://android.googlesource.com BRANCHmain-kernel-build-2024 git clone $AOSP_MIRROR/platform/prebuilts/build-tools -b $BRANCH --depth 1 build-tools git clone $AOSP_MIRROR/kernel/prebuilts/build-tools -b $BRANCH --depth 1 kernel-build-tools git clone $AOSP_MIRROR/platform/system/tools/mkbootimg -b $BRANCH --depth 1 pip3 install telethon - name: Set boot sign key env: BOOT_SIGN_KEY: ${{ secrets.BOOT_SIGN_KEY }} run: | if [ ! -z $BOOT_SIGN_KEY ]; then echo $BOOT_SIGN_KEY ./kernel-build-tools/linux-x86/share/avb/testkey_rsa2048.pem fi - name: Bot session cache id: bot_session_cache uses: actions/cachev4 if: false with: path: scripts/ksubot.session key: ${{ runner.os }}-bot-session - name: Build boot images run: | export AVBTOOL$GITHUB_WORKSPACE/kernel-build-tools/linux-x86/bin/avbtool export GZIP$GITHUB_WORKSPACE/build-tools/path/linux-x86/gzip export LZ4$GITHUB_WORKSPACE/build-tools/path/linux-x86/lz4 export MKBOOTIMG$GITHUB_WORKSPACE/mkbootimg/mkbootimg.py export UNPACK_BOOTIMG$GITHUB_WORKSPACE/mkbootimg/unpack_bootimg.py cd $GITHUB_WORKSPACE/KernelSU export VERSION$(($(git rev-list --count HEAD) 10200)) echo VERSION: $VERSION cd - bash $GITHUB_WORKSPACE/KernelSU/.github/scripts/build_a13.sh - name: Display structure of boot files run: ls -R - name: Upload images artifact uses: actions/upload-artifactv4 with: name: boot-images-android13 path: Image-android13*/*.img.gz check-build-kernel: if: (github.event_name pull_request !github.event.pull_request.draft) || github.ref refs/heads/checkci strategy: matrix: include: - version: 5.10 sub_level: 218 os_patch_level: 2024-08 - version: 5.15 sub_level: 151 os_patch_level: 2024-08 uses: ./.github/workflows/gki-kernel.yml with: version: android13-${{ matrix.version }} version_name: android13-${{ matrix.version }}.${{ matrix.sub_level }} tag: android13-${{ matrix.version }}-${{ matrix.os_patch_level }} os_patch_level: ${{ matrix.os_patch_level }} patch_path: ${{ matrix.version }} 对上面的工作流文件的详细解释 工作流名称 name: Build Kernel - Android 13定义了工作流的名称。 触发器 on push当向 main、ci 或 checkci 分支推送代码时触发。 pull_request当向 main 分支发起拉取请求时触发。 workflow_call允许其他工作流调用此工作流。 paths指定了触发工作流的文件路径只有当这些文件被修改时工作流才会运行。 作业 jobs build-kernel定义了一个名为 build-kernel 的作业。 if条件语句用于确定何时运行作业。这里排除了 pull_request 事件和 checkci 分支。 strategy.matrix定义了一个矩阵策略用于生成不同的作业变体。每个变体都有不同的 version、sub_level 和 os_patch_level。 uses指定了要使用的另一个工作流文件 gki-kernel.yml。 secrets设置为 inherit意味着这个作业将继承父工作流的所有秘密如 API 密钥等。 with传递参数到 gki-kernel.yml 工作流。 上传工件 upload-artifacts needs指定这个作业依赖于 build-kernel 作业。 runs-on指定在 ubuntu-latest 虚拟机上运行。 if条件语句用于确定何时运行这个作业。这里包括了主分支的推送、标签的创建或 ci 分支的推送。 env定义了环境变量这些变量通常用于配置通知或其他脚本。 steps定义了作业的步骤包括下载工件、检出代码、列出工件、下载预构建工具链、设置引导签名密钥、缓存机器人会话、构建引导镜像、显示引导文件结构和上传引导镜像工件。 检查构建 check-build-kernel if条件语句用于确定何时运行这个作业。这里包括了非草稿的拉取请求或 checkci 分支。 strategy.matrix定义了一个矩阵策略用于生成不同的作业变体。 uses指定了要使用的另一个工作流文件 gki-kernel.yml。 with传递参数到 gki-kernel.yml 工作流。