我正在用 JavaScript 编写自定义操作。
在我的 GitHub 操作中,我想根据触发它的事件类型做出决定。例如,它是推送还是 cron 作业。
如何使用 GitHub Actions Toolkit 访问此信息?
在“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 验证器检查时)?
现在我想在 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) 我有一个用例,其中每次针对开发分支提出拉取请求时,都需要向 slack 通道发送一条通知,其中包含 PR 链接以及可能有关哪个用户打开它的信息。
我很困惑该走哪条路
在浏览完https://github.com/integrations/slack#configuration后,我看到了仅订阅拉取请求的选项/github subscribe org/repo pulls,但这不允许自定义(例如,仅通知 PR 开发,而不是每个 PR)
Github actions 有方法指定仅在为开发提出拉取请求时运行,但由于它是特定于存储库的,我必须将工作流文件推送到 100 多个存储库
当 PR 被提升(未合并)到特定分支并可自定义(例如添加打开 PR 的用户信息)时,是否有更好的解决方案/自动化发布到 slack?
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 的操作的信息。
从GH Rest API 文档来看,我们似乎能够创建一个repository_dispatch事件,但没有workflow_dispatch创建事件。在GH GraphQL API中,我找不到如何调度事件。
是否可以workflow_dispatch使用 API 触发事件?
我试图弄清楚如何在同一工作流程中结合手动触发器和其他触发器(例如推送)
这是我的手动操作
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 工作流程确实有助于维护 GitHub Actions,减少从一个存储库到另一个存储库的大量复制/粘贴,但它们似乎仍然存在一个大问题:处理机密。
当实现“发布到 Slack”或“发布到矩阵/IRC”之类的操作时,您将需要机器人帐户的一些机密,如果您想在 50 个存储库中重用此操作,您可以想象在管理每个存储库中的机密时无法扩展。
我正在寻找解决此问题的方法,该解决方案不涉及使用操作将秘密部署到所有存储库,或者以某种方式集中它们。
请记住,可重用的工作流程可以跨组织工作,并且我已经在 4 个以上的组织之间共享了其中一些工作流程。因此,配置组织级别的机密也不是解决方案,还有其他原因:它们很容易暴露,因为它们可用于任何工作流程(而不是基于环境的工作流程)。
我有一个非常简单的 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) 我正在 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
这可能吗?
github-actions ×10
github ×5
docker ×2
dependabot ×1
git ×1
github-api ×1
gradle ×1
pull-request ×1
python ×1
slack ×1
url ×1
yaml ×1