我正在尝试配置一个 github 工作流,我已经设法在推送事件上配置它。但是,如果我需要它在一段时间过去后继续运行怎么办?
我从文档中了解到,它可以使用时间表来实现。
name: Release Management
on:
schedule:
- cron: "*/5 * * * *"
Run Code Online (Sandbox Code Playgroud)
如何指定操作将在哪个分支上运行?
我的最终目标是自动化发布。
我将以下 Github Actions 工作流程用于我的 C 项目。工作流在大约 40 秒内完成,但其中超过一半的时间用于安装valgrind包及其依赖项。
我相信缓存可以帮助我加快工作流程。我不介意多等几秒钟,但这似乎是对 GitHub 资源的毫无意义的浪费。
name: C Workflow
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: make
run: make
- name: valgrind
run: |
sudo apt-get install -y valgrind
valgrind -v --leak-check=full --show-leak-kinds=all ./bin
Run Code Online (Sandbox Code Playgroud)
运行sudo apt-get install -y valgrind会安装以下软件包:
gdbgdbserverlibbabeltrace1libc6-dbglibipt1valgrind我知道 Actions 支持缓存特定目录(并且已经有几个已回答的 SO 问题和关于此的文章),但我不确定 apt 安装的所有不同软件包最终在哪里。我假设/bin/或/usr/bin/不是唯一受安装软件包影响的目录。
是否有一种优雅的方法来缓存已安装的系统包以供将来运行工作流?
我有一个操作(一个yaml文件)用于将 docker 映像部署到 Google Cloud Run。
我想接收通知构建和推送结果的 Slack 或电子邮件消息。
构建操作完成后如何触发消息操作?
是否有可能获得构建操作的结果?
所以我正在构建一个动作,为一个将进入 Netlify 的项目进行构建。在操作中,我可以传递部署消息。在该部署消息中,我想传入触发构建的提交的提交消息。我正在查看文档,但找不到这是否可行。谢谢
为 GitHub Actions 配置工作流程时,可以选择传递 GitHub 令牌以在工作流程中向 GitHub 进行身份验证。
我已经看到以下两种获取所述令牌的方法:
github.token
secrets.github_token
Run Code Online (Sandbox Code Playgroud)
两者之间有功能上的区别吗?或者这只是获得相同令牌的两种方式?
我想将多个秘密连接到 GitHub 上的工作流程操作中。
我想到的示例是创建从文件夹到文件名的完整路径。
我在存储库的主分支上实现了GitHub Actions工作流程,它在 GitHub 中创建了我的包的新版本。然后我实施了另一个工作流程,该工作流程应在创建版本时触发。然而,这个触发器不起作用。
请注意,GitHub放弃了自己的
actions/create-release@v1项目,并建议使用softprops 发布操作。
我的工作流程模板如下:
name: Main release
on:
push:
branches:
- main
jobs:
release:
name: 'Release main'
runs-on: ubuntu-latest
steps:
- name: 'Checkout source code'
uses: 'actions/checkout@v2'
with:
ref: ${{ github.ref }
- name: Release
uses: softprops/action-gh-release@v1
with:
draft: false
body_path: CHANGELOG.md
name: ${{ steps.version.outputs.version }}
tag_name: ${{ github.ref }}
token: ${{ github.token }}
Run Code Online (Sandbox Code Playgroud)
我的on:release:created触发工作流程如下:
name: Act on release created
on:
release:
types: [created]
jobs:
build: …Run Code Online (Sandbox Code Playgroud) 今天我要讨论的话题是Github Actions。我对CI这个话题不熟悉。
在 GitHub 我想创建一个操作。我暂时使用GitHub的样板。我不明白ubuntu-latest jobs: build: runs-on: ubuntu-latest是什么意思。在另一个教程中我看到了自托管。我要部署的服务器上也是ubuntu,但是那跟它没关系吧?
非常感谢您的回答、反馈、评论和想法。
GitHub 工作流程 yml
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [ master ]
pull_request:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially …Run Code Online (Sandbox Code Playgroud) 有什么方法可以在单个运行器中运行多个作业或在作业之间共享 Github 操作工作区?
在我的组织中,开发团队使用由多个团队创建和管理的多个可重用工作流程。团队build创建并管理build.yaml构建应用程序。我的团队创建并管理analysis.yaml对应用程序构建进行数据分析并对构建的工件进行归档。
开发团队计划在他们的应用程序工作流程中使用我们的两个工作流程。为了使我的团队的工作流程正常工作,我的工作流程需要访问构建的代码(构建target目录maven、构建build目录gradle和node_modules构建npm目录)。
upload和cache操作)。是否有其他方法可以完成此任务并在构建运行程序本身上运行可重用工作流程?我有下面的例子。
build.yaml
on:
workflow_call
inputs:
build:
description: Build type
required: true
jobs:
Build:
runs-on: self-hosted
steps:
- name: Building apps
- if: ${{inputs.build=='gradle'}}
run: |
gradle build
Run Code Online (Sandbox Code Playgroud)
analysis.yaml
on:
workflow_call
inputs:
analysis:
description: Build type
required: true
type: boolean
jobs:
Build:
runs-on: self-hosted
steps:
- name: Building apps
- if: …Run Code Online (Sandbox Code Playgroud) 我不确定是否可能,但我正在尝试使用一个可重用工作流程的输出,在另一个可重用工作流程中,这是同一调用者工作流程的一部分。作为参考,请参阅以下配置:
呼叫者工作流程:
jobs:
call-workflow-calver:
uses: ./.github/workflows/called-workflow1.yaml
secrets: inherit
call-workflow-echo:
needs: call-workflow-calver
uses: ./.github/workflows/called-workflow2.yaml
secrets: inherit
Run Code Online (Sandbox Code Playgroud)
$VERSION用于创建 CalVer 标签的作业(作为操作的一部分输出)
称为工作流程 1:
...
jobs:
calver:
name: Create CalVer tag
...
steps:
- name: Calver tag
uses: StephaneBour/actions-calver@1.4.4
if: ${{ github.ref == 'refs/heads/main' }}
id: calVer
with:
date_format: "%Y-%m-%d"
release: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
...
Run Code Online (Sandbox Code Playgroud)
尝试使用另一个调用者工作流程的 CalVer $VERSION 输出
称为工作流程2:
...
- name: Echo
run: |
echo ${{needs.calver.outputs.VERSION}}
...
Run Code Online (Sandbox Code Playgroud)
基本概念是我尝试在另一个可重用工作流程中使用输出来设置工作流程 1 中的 CalVer 版本,在工作流程 2 中调用它,以便我可以将其设置为图像版本。我最终将在第三个可重用工作流程中使用来部署所述图像。如果这可能的话,那就太好了!
希望这一切都有道理,但如果有任何需要澄清的地方,请告诉我! …