标签: github-actions

如何获取触发 GitHub 操作的事件类型?

我正在用 JavaScript 编写自定义操作。

在我的 GitHub 操作中,我想根据触发它的事件类型做出决定。例如,它是推送还是 cron 作业。

如何使用 GitHub Actions Toolkit 访问此信息?

github-actions

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

如何自动合并 dependentabot 更新(配置版本 2)?

在“Dependabot 正在原生迁移到 GitHub!”之后,我必须更新我的 dependentabot 配置文件以使用版本 2 格式。

我的.dependabot/config.yaml确实看起来像:

version: 1
update_configs:
  - package_manager: "python"
    directory: "/"
    update_schedule: "live"
    automerged_updates:
      - match:
          dependency_type: "all"
          update_type: "all"
Run Code Online (Sandbox Code Playgroud)

我有以下工作:

version: 2
updates:
- package-ecosystem: pip
  directory: "/"
  schedule:
    interval: daily
Run Code Online (Sandbox Code Playgroud)

但我似乎无法再次添加自动合并选项(在使用dependentabot 验证器检查时)?

python yaml github github-actions dependabot

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

使用 Github 注册表中的 Docker 镜像未经授权

  • 我在本地创建了 Docker 镜像
  • 将其标记为 Github Docker 注册表
  • 将其推送到 Github Docker 注册表

现在我想在 Github 操作中使用它来在FROM现场创建 Docker 映像,但它总是失败并出现unauthorized错误 - 为什么?

步骤如下:

docker tag my_image:1.0 ghcr.io/<github_user>/<organization>/<repo_name>/my_image:1.0

docker push ghcr.io/<github_user>/<organization>/<repo_name>/my_image:1.0
a4f566342e89: Pushed
0378d9143186: Pushed
...
f337026e7d90: Pushed
Run Code Online (Sandbox Code Playgroud)

如您所见,一切都成功完成,我什至可以docker pull在我的计算机上完成

然后我设置 Github 操作并将其设置为启动 Powershell 脚本,该脚本从此 Dockerfile 创建 Docker 映像:

所以Github动作设置为:

...
...
jobs:

  build:

    runs-on: windows-2019

    steps:
    - uses: actions/checkout@v2
    - name: Package with Docker and push to Github packages
      id: build_and_push_docker_image    
      env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}    
      run: | …
Run Code Online (Sandbox Code Playgroud)

docker github-actions

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

自定义 Github 拉取请求的松弛通知

我有一个用例,其中每次针对开发分支提出拉取请求时,都需要向 slack 通道发送一条通知,其中包含 PR 链接以及可能有关哪个用户打开它的信息。

我很困惑该走哪条路

  1. 发布到 Slack 的 Github 操作
  2. slack 的 Github 应用程序(https://github.com/integrations/slack#configuration

在浏览完https://github.com/integrations/slack#configuration后,我看到了仅订阅拉取请求的选项/github subscribe org/repo pulls,但这不允许自定义(例如,仅通知 PR 开发,而不是每个 PR)

Github actions 有方法指定仅在为开发提出拉取请求时运行,但由于它是特定于存储库的,我必须将工作流文件推送到 100 多个存储库

当 PR 被提升(未合并)到特定分支并可自定义(例如添加打开 PR 的用户信息)时,是否有更好的解决方案/自动化发布到 slack?

github pull-request slack github-actions

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

有什么方法可以获取 GitHub 操作的最新结果的链接吗?

GitHub 的 Actions 功能最近开始允许用户生成徽章,以展示其测试的状态。例如,如果我有一组测试从名为 的文件在我的存储库的 dev 分支上运行.github/test_dev.yml,我可以通过添加到/badge.svg测试 URL 的末尾来访问该构建的状态。

https://github.com/<username>/<repo_name>/actions/workflows/test_dev.yml/badge.svg
Run Code Online (Sandbox Code Playgroud)

从让您的项目自述文件保持最新的项目状态的角度来看,这非常好,但下一个合乎逻辑的步骤是添加指向最新测试结果的徽章的链接。

不幸的是,即使您可以按如下方式访问特定操作的所有测试:

https://github.com/<username>/<repo_name>/actions/workflows/test_dev.yml
Run Code Online (Sandbox Code Playgroud)

测试运行本身似乎是在一个唯一的ID后面actions/runs/

https://github.com/<username>/<repo_name>/actions/runs/1234567890
Run Code Online (Sandbox Code Playgroud)

有没有办法构造一个只指向最新测试的 URL?就像是:

https://github.com/<username>/<repo_name>/actions/workflows/test_dev.yml?result=latest
Run Code Online (Sandbox Code Playgroud)

我翻阅了 GitHub 的文档,但尽管有一些关于生成这些徽章 SVG 的文档,但我找不到任何有关直接链接到实际生成该 SVG 的操作的信息。

url github github-flavored-markdown github-actions

18
推荐指数
1
解决办法
4284
查看次数

如何从 Github API 触发“workflow_dispatch”?

GH Rest API 文档来看,我们似乎能够创建一个repository_dispatch事件,但没有workflow_dispatch创建事件。在GH GraphQL API中,我找不到如何调度事件。

是否可以workflow_dispatch使用 API 触发事件?

github github-api github-actions

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

github操作将workflow_dispatch和push结合在同一个工作流程中

我试图弄清楚如何在同一工作流程中结合手动触发器和其他触发器(例如推送)

这是我的手动操作


on:
  workflow_dispatch:
    inputs:
      environment:
        type: environment
        default: DEV
        required: true

env:
  ENVIRONMENT: ${{ github.event.inputs.environment }}
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西

on:
  push:
    branches:
    - main
    - dev
  workflow_dispatch:
    inputs:
      environment:
        type: environment
        default: DEV
        required: true

env:
  ENVIRONMENT: ${{ github.event.inputs.environment }} or {{ DEV if dev }} or {{ PROD if main }}
.
.
.

Run Code Online (Sandbox Code Playgroud)

github-actions

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

如何使用可重用的 GitHub 工作流程并将秘密保存在一个地方?

虽然可重用的 GitHub 工作流程确实有助于维护 GitHub Actions,减少从一个存储库到另一个存储库的大量复制/粘贴,但它们似乎仍然存在一个大问题:处理机密。

当实现“发布到 Slack”或“发布到矩阵/IRC”之类的操作时,您将需要机器人帐户的一些机密,如果您想在 50 个存储库中重用此操作,您可以想象在管理每个存储库中的机密时无法扩展。

我正在寻找解决此问题的方法,该解决方案不涉及使用操作将秘密部署到所有存储库,或者以某种方式集中它们。

请记住,可重用的工作流程可以跨组织工作,并且我已经在 4 个以上的组织之间共享了其中一些工作流程。因此,配置组织级别的机密也不是解决方案,还有其他原因:它们很容易暴露,因为它们可用于任何工作流程(而不是基于环境的工作流程)。

github-actions

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

为什么当我将 github 操作 CI 用于 gradle 项目时,我会遇到“./gradlew: Permission denied”错误?

我有一个非常简单的 gradle 项目,当我设置 GitHub Actions CI 时,我遇到了这个错误:

Run ./gradlew clean dependencies
  ./gradlew clean dependencies
  shell: /bin/bash -e {0}
  env:
    JAVA_HOME: /opt/hostedtoolcache/Java/8.0.222/x64
    JAVA_HOME_8.0.222_x64: /opt/hostedtoolcache/Java/8.0.222/x64
/home/runner/work/_temp/8f29e484-fbb4-4e29-a02a-679519aec24c.sh: line 1: ./gradlew: Permission denied
##[error]Process completed with exit code 126.
Run Code Online (Sandbox Code Playgroud)

continuous-integration github gradle github-actions

17
推荐指数
2
解决办法
3778
查看次数

如何获得github工作流程的短sha?

我正在 GitHub 中创建一个工作流,它创建并使用一个 docker 图像。因此,我使用此 docker 映像的全局环境变量启动了我的工作流文件,该环境变量对我的工作流中的所有作业都可见:

name: continuous integration
on:
  push:
    branches:
      - '**'

env:
  IMAGE: docker.pkg.github.com/${{ github.repository }}/jactor-persistence:${{ github.sha }}
Run Code Online (Sandbox Code Playgroud)

我想${{ github.sha }}用head commit的short sha替换,和下面命令的结果一样git rev-parse --short HEAD

这可能吗?

git docker github-actions

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