标签: github-actions

合并 PR 时运行 GitHub Action

我正在寻找一种在合并 PR 时运行 GitHub Action 的方法,GitHub Action 必须获取 PR 描述并将数据存储在某处以供以后使用。

有没有办法通过 GitHub Actions 而不使用 API 或 Webhook 来做到这一点?

github github-actions

5
推荐指数
1
解决办法
6474
查看次数

Docker 缓存 pip install 的奇怪行为

我正在 GitHub Actions 工作流程中构建 Docker 容器,并且我有一个使用Docker buildx 的自定义缓存解决方案。本质上,我使用docker buildx 构建 --cache-from--cache-to参数来转储上次构建的缓存,将其存储在外部,并在下一次构建时加载它,以节省时间。

在大多数情况下,这工作得很好。大部分构建时间都花在了pip install因为我们使用 Alpine 并且没有可用的轮子上,所以它必须构建包,因此跳过使用缓存的步骤可以节省大量时间。

Dockerfile 中有两行相关的行:

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

不过,我遇到了这个奇怪的问题,哪里requirements.txt没有改变,第一行( )COPY正确使用了缓存,但第二行( )RUN使用缓存,并继续重新构建所有包。

我不知道是什么原因造成的。如果COPY正确使用缓存,那么它必须识别出requirements.txt没有改变,如果requirements.txt没有改变,我不明白为什么它不使用命令的缓存RUN

最糟糕的是,它是间歇性的。有些构建它使用缓存,有些构建它重新构建包,在两种情况下requirements.txt(或任何前面的 Dockerfile 行)都没有改变。

我错过了什么吗?

caching pip docker github-actions buildx

5
推荐指数
0
解决办法
304
查看次数

自动将 Dependabot 生成的 Pull 请求与代码所有者文件和分支保护规则合并?

我已经为 GitHub Actions 创建了工作流程,如下所述:https: //docs.github.com/en/code-security/supply-chain-security/keeping-your-dependency-updated-automatically/automating-dependabot-with-github - 行动

    name: Dependabot auto-approve
    on: pull_request_target
    
    permissions:
      contents: write
      pull-requests: write
    
    jobs:
      dependabot:
        runs-on: ubuntu-latest
        if: ${{ github.actor == 'dependabot[bot]' }}
        steps:

          - name: Approve a PR
            run: gh pr review --approve "$PR_URL"
            env:
              PR_URL: ${{github.event.pull_request.html_url}}
              GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}

          - name: Enable auto-merge for Dependabot PRs
            run: gh pr merge --auto --merge "$PR_URL"
            env:
              PR_URL: ${{github.event.pull_request.html_url}}
              # The documentation incorrectly forgets `GITHUB_TOKEN` here.
              GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
Run Code Online (Sandbox Code Playgroud)

上述自动化工作正常,但我有一个分支保护规则,需要代码所有者的审查。

有没有办法包含github-actions到 CODEOWNERS 文件中以使其批准有效?

github github-actions dependabot github-codeowners

5
推荐指数
1
解决办法
2972
查看次数

如何在github操作列表中显示分支名称

我正在寻找在 github 操作列表中显示分支名称的提示,如下面的屏幕截图所示。

在此输入图像描述

正如你所看到的,有时 github 会自动添加分支名称,我想知道是否可以配置一些东西来每次都显示分支名称。

有人来帮助我吗?谢谢

github github-actions

5
推荐指数
0
解决办法
95
查看次数

如果失败,Github 操作将拒绝操作

我第一次尝试使用 github 操作,我已经创建并遵循了 github 的教程,我的.github/workflows/push_main.yml是:

name: Android CI
on:
  push:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1

      - name: set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11

      # Runs ktlint
      - name: Lint
        run: ./gradlew ktlintCheck

      # Execute unit tests
      - name: Unit Test
        run: ./gradlew testDebugUnitTest

Run Code Online (Sandbox Code Playgroud)

另外,我想要的是,当尝试进行变基或合并以main进行此检查时,如果它有效,则保留操作rebasemerge我想做类似的事情,创建一个临时分支,在那里进行检查,如果它有效执行rebaseormerge到 main 中,然后删除临时分支,但我不知道是否有其他有效的方法可以做到这一点。我还看到我可以并行运行作业,这会使其速度更快吗?

continuous-integration android yaml github github-actions

5
推荐指数
1
解决办法
484
查看次数

Github 操作矩阵包括基于 GitHub 事件有条件的条目

我目前有一个工作流程,可以在合并到 master 时触发部署,并确保开发作业在部署产品之前通过。总共有 4 个环境(2 个 dev 和 2 个 prod),如果可能的话,我希望能够减少代码重复并将作业数量减少到 1 个,因为作业之间唯一改变的是环境变量。

我遇到的问题是似乎没有办法根据 github 事件有条件地包含或排除条目。如果有人提供意见或知道一个好的解决方法,我将非常感激。

文件和内容如下。

应用.yaml:

name: Terraform Apply

on:
  deployment:
  workflow_dispatch:
    inputs:
      environment:
        description: "name of the environment"
        required: true
        default: "dev"

env:
  AWS_ACCESS_KEY_ID: ${{ secrets.KEY_ID_EXAMPLE }}
  AWS_SECRET_KEY: ${{ secrets.KEY_EXAMPLE }}

jobs:
  deploy-dev:
    name: TF Apply - Dev
    runs-on: ubuntu-latest
    if: ${{ github.event.deployment.environment == 'dev' || github.event.deployment.environment == 'all' || github.event.inputs.environment == 'dev' || github.event.inputs.environment == 'all' }}
    env:
      TF_VAR_aws_provider_role_arn: arn:example
      TF_VAR_example_api_key: ${{ secrets.EXAMPLE_API_KEY }}
      TF_VAR_example_app_key: ${{ …
Run Code Online (Sandbox Code Playgroud)

yaml github-actions

5
推荐指数
1
解决办法
3571
查看次数

Vue 3:无法解析“@vue/vue3-jest”模块。在 GitHub 上操作

升级到 Vue 3 后在 GitHub actions 中运行单元测试时,出现以下错误:

\n
> vue-cli-service test:unit\n\n\xe2\x97\x8f Validation Error:\n\n  An unknown error occurred in @vue/cli-plugin-unit-jest:\n\n  Cannot resolve "@vue/vue3-jest" module. Please make sure you have installed "@vue/vue3-jest" as a dev dependency.\n
Run Code Online (Sandbox Code Playgroud)\n

GitHub actions 脚本用作npm ci上一步来安装依赖项,并且测试命令vue-cli-service test:unit在本地运行。

\n

我的 package.json 有:

\n
"devDependencies": {\n    "@babel/core": "^7.16.7",\n    "@babel/eslint-parser": "^7.16.5",\n    "@babel/plugin-proposal-optional-chaining": "^7.14.5",\n    "@storybook/addon-a11y": "^6.4.12",\n    "@storybook/addon-actions": "^6.4.12",\n    "@storybook/addon-essentials": "^6.4.12",\n    "@storybook/addon-links": "^6.4.12",\n    "@storybook/addon-storysource": "^6.4.12",\n    "@storybook/vue": "^6.4.12",\n    "@testing-library/dom": "^7.31.2",\n    "@testing-library/jest-dom": "^5.16.1",\n    "@testing-library/user-event": "^13.2.1",\n    "@testing-library/vue": "^6.4.2",\n    "@vue/babel-preset-app": "latest",\n    "@vue/cli-plugin-babel": …
Run Code Online (Sandbox Code Playgroud)

vue.js jestjs github-actions

5
推荐指数
1
解决办法
1757
查看次数

如何在 github actions 中配置一系列工作流程来传递 git sha?

我目前有一个非常简单的设置,有两个工作流程;builddeploy。截至目前,已deploy为我们部署到开发、测试和生产阶段。这样做有一个缺点,例如很难看到最新的生产部署是什么,而且如果我想重新部署测试或生产,我需要触发整个工作流程。

当我只有上面提到的两个时,我可以build通过访问 来读取工作流程的 git sha github.event.workflow_run.head_sha,因此当前的流程可以工作(不理想,但它有效)。

我的计划现在是为部署到开发、测试和生产提供单独的工作流程,但我知道有一个问题,即知道 git sha 触发了部署到开发将触发的构建。当时我的计划是使用作业的输出,但如何从一个工作流程中访问另一个工作流程中的输出?

所以我想做这样的事情:

name: Deploy dev
on:
  workflow_run:
    workflows: [Build]
    types: [completed]
  workflow_dispatch:
  

jobs:
  on-build-failure:
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'failure' }}
    steps:
      - run: |
          echo "First workflow was a failure"
          exit 1

  on-build-success:
    outputs:
      commit-sha: ${{ github.event.workflow_run.head_sha }}
    runs-on: ubuntu-latest
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    steps:
      - run: echo "Build succeeded, continue with deploy"
Run Code Online (Sandbox Code Playgroud)

然后在部署测试中:

name: Deploy test
on: …
Run Code Online (Sandbox Code Playgroud)

github-actions

5
推荐指数
0
解决办法
1930
查看次数

没有 .ENV 的 Github 工作流程

我正在尝试为我的 Flutter 应用程序设置 Github 工作流管道,但building命令flutter analyze失败,因为我没有提交 .ENV 文件

\n

有没有办法将 .ENV 添加到我的工作流程中而不将其提交到源代码管理?

\n

因为.env不应该提交\xe2\x80\x99

\n
name: CI\non:\n  pull_request:\n    branches:\n      - master\n      - dev\n\njobs:\n  flutter_test:\n    name: Run flutter test and analyze\n    runs-on: macos-latest\n    steps:\n      - uses: actions/checkout@v2\n      - uses: actions/setup-java@v1\n        with:\n          java-version: "12.x"\n      - uses: subosito/flutter-action@v1\n        with:\n          channel: "stable"\n      - run: flutter pub get\n      - run: flutter analyze\n      - run: flutter test\n\n  build_ios:\n    name: Build Flutter (iOS)\n    needs: [flutter_test]\n    runs-on: macos-latest\n    steps:\n      - …
Run Code Online (Sandbox Code Playgroud)

flutter github-actions flutter-dotenv

5
推荐指数
1
解决办法
404
查看次数

如何将 GitHub Actions 矩阵的字符串转换为数组?

我在 GitHub Actions 中有两份工作。一种是运行 Python 脚本来获取列表 [[file1, 1.0], [file2, 3.0]],另一种是将这个列表放入 GitHub Actions 矩阵中。我从 Python 脚本中收到一个无法放入矩阵中的字符串。我该如何解决这个问题?

on:
  pull_request:
    branches: [master, develop]
    types: [closed]
jobs:
  compute-version:
    runs-on: ubuntu-latest
    outputs:
      list: ${{ steps.semver.outputs.list }}
    steps:
      - name: Run Computer Version Script
        id: semver
        run: |
          python ./.github/bump-version.py $GITHUB_REF
          res=$?
          echo "::set-output name=list::$res"
  update-yaml:
      needs: compute-version
      runs-on: ubuntu-latest
      strategy:
        matrix:
          node: ${{needs.compute-version.outputs.bump_list}}
      steps:
        - name: Checkout
          uses: actions/checkout@v2
        - name: Update Version on Yaml File
          uses: fjogeleit/yaml-update-action@master
          with:
            valueFile: ${{ matrix.node['file'] }}
            propertyPath: info.version …
Run Code Online (Sandbox Code Playgroud)

github-actions

5
推荐指数
2
解决办法
1万
查看次数