标签: github-actions

禁用 Github Action 工作流程,仅在需要时运行

我有一些非常昂贵的基准/测试,我只想在一些 PR 上运行,而不是全部。有没有办法通过 github actions 来做到这一点?

continuous-integration github github-actions building-github-actions

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

仅当上一步已运行时才运行 GitHub 操作步骤

我在 GitHub 操作中设置了一个工作流来运行我的测试并创建测试覆盖的工件。我的 YAML 文件的精简版如下所示:

name: Build

on: [pull_request]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      # Other steps here

      - name: Build app
      - name: Run tests
      - name: Create artifact of test coverage

      # Other steps here
Run Code Online (Sandbox Code Playgroud)

问题是当测试失败时不会创建工件。

if: always()docs 中找出了条件,但这也会导致当我的Build app步骤失败时运行此步骤。我不希望这种情况发生,因为在这种情况下没有什么可存档的。

如果上一步已运行(成功或失败),我如何仅运行此步骤?

continuous-integration github continuous-deployment github-actions

12
推荐指数
2
解决办法
5232
查看次数

如何在 github 操作中使用 GPG 密钥?

我正在尝试通过GitHub 操作进行 maven 部署,但出现以下错误:-

gpg: directory '/home/runner/.gnupg' created
gpg: keybox '/home/runner/.gnupg/pubring.kbx' created
gpg: no default secret key: No secret key
gpg: signing failed: No secret key
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  13.272 s
[INFO] Finished at: 2020-04-06T12:18:44Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (sign-artifacts) on project pretty-simple-jar: Exit code: 2 -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

我知道我需要以某种方式在运行操作工作流的虚拟运行器中导入我的 gpg 密钥,但我无法找到通过 GitHub 操作工作流在虚拟运行器中导入我的密钥的方法?

以下是我的工作流程:-

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up …
Run Code Online (Sandbox Code Playgroud)

github gnupg maven-deploy-plugin github-actions

12
推荐指数
3
解决办法
3141
查看次数

GitHub Action 中的 npm install 失败并显示“ENOENT:没有这样的文件或目录” - 在其他地方工作正常

我目前正在努力用 GitHub Actions 替换我们的 Drone CI 安装。

到目前为止,我的操作工作流归结为以下.github/workflows/ci.yml文件:

on: [ push, pull_request ]

name: CI
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Install Node
        uses: actions/setup-node@v1
        with:
          node-version: '13.x'

      - name: Install Dependencies
        run: npm install
Run Code Online (Sandbox Code Playgroud)

日志本身是一长串npm WARN tar ENOENT: no such file or directoryala 下面的截断列表。

2020-04-29T21:15:31.7899082Z npm install
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/acorn-26d8ba97/dist/acorn.js.map'
npm WARN tar ENOENT: no such file or directory, open '/home/runner/work/project/project/node_modules/.staging/coffeescript-acee515b/lib/coffee-script/register.js' …
Run Code Online (Sandbox Code Playgroud)

github node.js npm npm-install github-actions

12
推荐指数
1
解决办法
4517
查看次数

可以将 GitHub Secrets 与公共存储库一起使用吗?

我有一个带有 GitHub Action 的私有存储库,当有新的推送到主分支时,它会将代码推送到 AWS S3 存储桶。我需要一对访问密钥才能推送内容,我将它们存储为 GitHub Secrets 并将它们作为构建脚本中的环境变量进行引用。现在我想在不久的将来公开这个 repo,我想知道这样做是否安全。操作的工作流 (.github/workflows/main.yml) 本身确实是公开可见的,它的作用是什么,但它只有一个命令aws s3 cp myfile s3://my-bucket,代码本身绝对没有访问密钥。

将 GitHub Secrets 用于公共存储库中的操作是否安全?我是唯一的所有者和唯一的贡献者,这在未来不会改变。稍后我可能会使用 webhook 切换到 CodePipeline,但想先尝试 GitHub Actions。谢谢。

git github amazon-web-services github-actions

12
推荐指数
1
解决办法
3385
查看次数

如何使 GitHub 工作流依赖于另一个工作流的成功?

我在 GitHub 上做了一个新项目,有两个工作流程:

我希望只有在第一个工作流程成功时才触发第二个工作流程。有没有办法做到这一点?或者我是否需要创建一个工作流文件,其中第二个工作依赖于第一个工作?

dependencies publish docker github-actions

12
推荐指数
0
解决办法
4163
查看次数

GitHub 操作 - 定义作业之间的工作流级别环境变量

我想在我的 Github 操作工作流中的作业之间定义和设置环境变量。下面的工作流程是我尝试过的,但不幸的是环境变量GIT_PR_SHA_SHORTE2E_GIT_PR_SHA不起作用。

是否可以?

name: Git Pull Request Workflow

on:
  workflow_dispatch:
  pull_request:
    branches:
      - master

env:
  GIT_PR_SHA: ${{github.event.pull_request.head.sha}}
  GIT_PR_SHA_SHORT: "${{ env.GIT_PR_SHA:0:10 }}"
  ENV_NAME: test
  E2E_GIT_PR_SHA: "${{ env.ENV_NAME }}-${{ env.GIT_PR_SHA_SHORT }}"

jobs:
  first-job:
    name: Build Docker Image
    runs-on: ubuntu-latest

    steps:
    - name: First Echo Step
      run: |
            echo "GIT_PR_SHA_SHORT = ${GIT_PR_SHA_SHORT}"
            echo "E2E_GIT_PR_SHA = ${E2E_GIT_PR_SHA}"

  second-job:
    name: Build Docker Image
    runs-on: ubuntu-latest

    steps:
    - name: Second Echo Step
      run: |
            echo "GIT_PR_SHA_SHORT = ${GIT_PR_SHA_SHORT}"
            echo "E2E_GIT_PR_SHA = …
Run Code Online (Sandbox Code Playgroud)

github-actions

12
推荐指数
3
解决办法
4607
查看次数

如何从 master 以外的分支运行 GitHub Action?

我在 GitHub 中有一个 repo,我想创建一个 Action 来构建 Docker 镜像并将其推送到 DockerHub。我知道该怎么做,但是:如果我在 master GitHub 以外的分支中创建操作,则不会运行它。

这是一个已知问题(工作流文件仅从 master 获取?)。

任何想法来解决它?

github github-actions

12
推荐指数
2
解决办法
9725
查看次数

Coveralls GitHub 操作 - 错误:未找到 Lcov 文件

我正在使用 GitHub 操作配置工作服。

我进行了搜索,但找不到如何生成 ./coverage/lcov.info 文件。
当操作运行时,由于我没有这样的文件,我得到:

Using lcov file: ./coverage/lcov.info  
Error: Lcov file not found.
Run Code Online (Sandbox Code Playgroud)

我尝试通过 IntelliJ 使用 Coverage 运行测试,但我可以生成的唯一导出是 HTML 格式。

如何生成 lcov.info 文件?

编辑 - 根据评论中的要求添加我的工作流程以供参考

# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"

on:
  push:
    branches: …
Run Code Online (Sandbox Code Playgroud)

java coveralls github-actions

12
推荐指数
1
解决办法
1090
查看次数

Github 操作:默认分支变量

有没有什么聪明的方法来确定 Github 操作中的默认分支?

现在我需要写一些类似的东西:

on:
  push:
    branches:
      - master
Run Code Online (Sandbox Code Playgroud)

有没有办法编写类似下面的代码?

on:
  push:
    branches:
      - $default-branch
Run Code Online (Sandbox Code Playgroud)

我试着用谷歌搜索但什么也没找到

continuous-integration github github-actions

12
推荐指数
4
解决办法
1739
查看次数