标签: github-actions

Github 操作,在分支上调度操作

我正在尝试配置一个 github 工作流,我已经设法在推送事件上配置它。但是,如果我需要它在一段时间过去后继续运行怎么办?

我从文档中了解到,它可以使用时间表来实现。

name: Release Management

on: 
  schedule:
   - cron: "*/5 * * * *"
Run Code Online (Sandbox Code Playgroud)

如何指定操作将在哪个分支上运行?

我的最终目标是自动化发布。

git workflow github github-actions

21
推荐指数
1
解决办法
5460
查看次数

在 GitHub Actions 工作流程中缓存 APT 包

我将以下 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会安装以下软件包:

  • gdb
  • gdbserver
  • libbabeltrace1
  • libc6-dbg
  • libipt1
  • valgrind

我知道 Actions 支持缓存特定目录(并且已经有几个已回答的 SO 问题和关于此的文章),但我不确定 apt 安装的所有不同软件包最终在哪里。我假设/bin//usr/bin/不是唯一受安装软件包影响的目录。

是否有一种优雅的方法来缓存已安装的系统包以供将来运行工作流?

apt github-actions

21
推荐指数
4
解决办法
6616
查看次数

Github Actions - 在一个动作完成后触发另一个动作

我有一个操作(一个yaml文件)用于将 docker 映像部署到 Google Cloud Run。

我想接收通知构建和推送结果的 Slack 或电子邮件消息。

构建操作完成后如何触发消息操作?

是否有可能获得构建操作的结果?

github github-actions

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

GitHub 操作 获取提交消息

所以我正在构建一个动作,为一个将进入 Netlify 的项目进行构建。在操作中,我可以传递部署消息。在该部署消息中,我想传入触发构建的提交的提交消息。我正在查看文档,但找不到这是否可行。谢谢

github-actions

21
推荐指数
5
解决办法
9246
查看次数

github.token 与 Secrets.github_token 之间的区别?

为 GitHub Actions 配置工作流程时,可以选择传递 GitHub 令牌以在工作流程中向 GitHub 进行身份验证。

我已经看到以下两种获取所述令牌的方法:

github.token
secrets.github_token
Run Code Online (Sandbox Code Playgroud)

两者之间有功能上的区别吗?或者这只是获得相同令牌的两种方式?

github-actions

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

如何将机密连接到 GitHub 上的工作流程操作中?

我想将多个秘密连接到 GitHub 上的工作流程操作中。

我想到的示例是创建从文件夹到文件名的完整路径。

github github-actions github-secret

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

发布时的 GitHub Actions 创建的工作流触发器不起作用

我在存储库的主分支上实现了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)

continuous-integration release github github-actions

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

ubuntu-latest 对于 GitHub Actions 意味着什么?

今天我要讨论的话题是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)

continuous-integration github-actions

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

Github 操作:在单个运行器中运行多个作业或在作业之间共享工作空间

有什么方法可以在单个运行器中运行多个作业或在作业之间共享 Github 操作工作区?

在我的组织中,开发团队使用由多个团队创建和管理的多个可重用工作流程。团队build创建并管理build.yaml构建应用程序。我的团队创建并管理analysis.yaml对应用程序构建进行数据分析并对构建的工件进行归档。

开发团队计划在他们的应用程序工作流程中使用我们的两个工作流程。为了使我的团队的工作流程正常工作,我的工作流程需要访问构建的代码(构建target目录maven、构建build目录gradlenode_modules构建npm目录)。

  • 有没有办法在构建代码的运行器上运行我的可重用工作流程?
  • 有没有办法可以访问构建代码的工作区(我搜索了其他答案并了解到我可以使用操作uploadcache操作)。是否有其他方法可以完成此任务并在构建运行程序本身上运行可重用工作流程?
  • 通过复合操作而不是使用可重用工作流程可以更好地完成此任务吗?

我有下面的例子。

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)

github runner github-actions

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

GitHub Actions - 重用其他可重用工作流程的输出

我不确定是否可能,但我正在尝试使用一个可重用工作流程的输出,在另一个可重用工作流程中,这是同一调用者工作流程的一部分。作为参考,请参阅以下配置:

呼叫者工作流程:

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 中调用它,以便我可以将其设置为图像版本。我最终将在第三个可重用工作流程中使用来部署所述图像。如果这可能的话,那就太好了!

希望这一切都有道理,但如果有任何需要澄清的地方,请告诉我! …

github github-actions

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