标签: github-actions

使用 GitHub Actions 自动向 GitHub 存储库发出拉取请求

我在 GitHub 存储库中有一个文件,需要通过运行命令偶尔更新。

作为GitHub Workflows 的一部分,我想让一个机器人运行一个命令,并查看它是否在 repo 上创建了一个差异,如果是,则自动向存储库发出拉取请求。

我怀疑GitHub 工作流可以帮助我做到这一点,因为 GitHub 现在允许人们运行任意容器(“操作”),这些容器可以在存储库中进行构建等操作。我看到一些官方的自动化工作流程,让你在这里“标记”和“评论”问题等:https : //github.com/actions/starter-workflows/tree/master/automation

如果我想运行任意命令并对存储库进行 PR,我应该查看哪些 GitHub Actions 而不是重新发明我自己的 Actions?任何指针表示赞赏。

github github-actions

8
推荐指数
1
解决办法
2951
查看次数

使用 github 操作发布文档

我考虑的是:

  • github 提供 github 页面以在我的master分支或专用gh-pages分支上的文件夹中托管文档,但这意味着提交构建工件
  • 我也可以readthedocs通过 webhooks 为我构建和托管文档,但这意味着在我尝试整合与我的项目相关的所有内容的时间点学习如何配置 Yet Another Toolgithub-actions

我已经有一个对我有用的文档构建过程(sphinx用作构建器)并且我也可以在本地测试,所以我宁愿只是利用它。它设置了所有规则并html在工件中放置了一些静态- 它只是不会在任何地方提供。在工作流程中处理它,我的项目的所有其他部署配置都存在,感觉比将它分散在不同的工具或 github 特定选项中感觉更好。

市场上是否已经有一项行动可以让我做这样的事情?

name: CI
on: [push]
jobs:

  ...  # do stuff like building my-project-v1.2.3.whl, testing, etc.

  release_docs:
    steps:
      - uses: actions/sphinx-to-pages@v1  # I wish this existed
        with:
          dependencies:
            - some-sphinx-extension
            - dist/my-project*.whl
          apidoc_args:
            - "--no-toc"
            - "--module-first"
            - "-o docs/autodoc"
            - "src/my-project"
          build-args:
            - "docs"
            - "public"  # the content of this folder will then …
Run Code Online (Sandbox Code Playgroud)

python-sphinx github-pages read-the-docs github-actions

8
推荐指数
2
解决办法
2124
查看次数

对 github 操作工作流进行独特的检查

我正在尝试使用enforce-label-action强制标记 PR 。

name: Enforce PR label

on:
  pull_request:
    types: [labeled, unlabeled, opened, edited]

jobs:
  enforce-label:
    runs-on: ubuntu-latest
    steps:
    - uses: yogevbd/enforce-label-action@master
      with:
        REQUIRED_LABELS_ANY: "bug,enhancement,feature"
Run Code Online (Sandbox Code Playgroud)

问题是每次标记 PR 时,都会创建一个新的检查运行,而旧的检查运行仍然处于失败状态,导致检查套件显示:Some checks were not successful

github-actions当触发具有相同名称的工作流检查时,是否可以丢弃旧的检查运行?

检查运行状态

github github-api github-actions

8
推荐指数
1
解决办法
492
查看次数

在 GitHub Actions 中,我可以返回一个值以供以后用作条件吗?

我正在将 GitHub Actions 设置为我的一个项目的 CI,整个构建过程基本上是一个 PowerShell 脚本,由环境变量驱动。

这既是为了最大限度地减少供应商锁定,并确保我可以使用几乎相同的过程在本地运行构建。

现在,我的构建脚本确定了一些内容并将其放入环境变量中 - 具体来说,我有一个MH_IS_PROD_BUILDTrue 或 False的变量,并确定我推送到哪个 nuget 包存储库。

但是,当运行 shell 的步骤完成时,环境变量将不复存在,因为进一步的步骤似乎是在新环境中运行的。

想做的是这样的事情(缩写):

  steps:
    - name: Run build script
      id: pwshbuild
      shell: pwsh
      run: |
        cd scripts
        ./build.ps1
        # The above sets $Env:MH_IS_PROD_BUILD to either True or False
    - name: Push Publish to GPR (Dev Package)
      if: steps.pwshbuild.outputs.MH_IS_PROD_BUILD == 'False'
      shell: pwsh
      run: |
        # omitted: determine $nupkgPath
        nuget push $nupkgPath -Source "GPR" -SkipDuplicate
    - name: Push Publish …
Run Code Online (Sandbox Code Playgroud)

github-actions

8
推荐指数
2
解决办法
4551
查看次数

Github Action- 如何重新启动会话?

我有一个Github Action,它创建了一个dotnet 工具,并尝试使用它。

$ dotnet pack MyTool.csproj --configuration Release
$ dotnet tool install --global --add-source . MyTool

Since you just installed the .NET Core SDK, you will need to logout or restart your session before running the tool you installed.
You can invoke the tool using the following command: my-tool
Tool 'MyTool' (version '1.0.0') was successfully installed.

$ my-tool

my-tool: command not found
Run Code Online (Sandbox Code Playgroud)

我怎样才能logout or restart my session在工作中,重新加载PATH

ubuntu dotnet-tool github-actions

8
推荐指数
1
解决办法
390
查看次数

在 github 操作中切换环境变量

我使用 github 操作进行集成测试。

问题是,测试不应该在具有相同配置的多个实例上并行运行(测试会失败)。

但是,它可以在配置 1 下运行一次,在配置 2 下并行运行一次。

正如这篇博文所述,无法确保工作流不会并行运行。

有没有办法切换配置,配置1和配置2交替?

在这种情况下,具有相同配置的工作流工作流不太可能并行运行(如果需要,我可以添加更多配置)。

例如,这可以通过全局和可写的(对于工作流)变量变量交替为 1 或 2,并且工作流选择该配置。

示例工作流程(confToSwitch应该切换秘密):

name: test
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v1
    - name: Set up JDK 1.8
      uses: actions/setup-java@v1
      with:
        java-version: 1.8
    - name: "load configuration"
      run: echo "configuration=$conf" >> ./conf
      env:
        conf: ${{ secrets.confToSwitch }}
    - name: "integration tests"
      run: "mvn -B integration-test"
Run Code Online (Sandbox Code Playgroud)

concurrency continuous-integration github github-actions

8
推荐指数
1
解决办法
4162
查看次数

我可以根据提交消息过滤 GitHub 操作步骤吗?

我最近在我的 GitHub 操作中添加了一个静态分析步骤。但是,它有点昂贵,所以我试图减少运行此步骤的次数。我已经添加了一个适当的过滤器,以便它只在一个操作系统上运行,并且只在我的“功能”分支上运行。但是,我还想过滤掉提交消息中包含“WIP”的所有签入。(理论是,在它不再是“正在进行的工作”之前,进行全面分析是没有意义的。)

我搜索了文档,希望能找到一个可以用作github上下文对象一部分的对象,但无济于事。

关于如何实现这一目标的任何想法?

如果你想确切地看到我在做什么,Yaml 的操作如下。我希望找到一些我可以ifStatic Analysis项目声明进行的更改,以实现我的目标。

name: On Push

on: [push]

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
    - uses: actions/checkout@v1

    - name: Build
      run: |
        ./configure
        make -j 4

    - name: Run tests
      run: |
        make -j 4 check

    - name: Static Analysis
      if: runner.os == 'macOS' && startsWith(github.ref, 'refs/heads/feature/')
      run: |
        make analyze
Run Code Online (Sandbox Code Playgroud)

github github-actions

8
推荐指数
2
解决办法
1548
查看次数

使用 GitHub 操作将 Angular 应用程序部署到 beanstalk

我有一个 Angular 应用程序,需要使用 GitHub Actions 将其部署到 Elastic Beanstalk。我遵循此指南按应用程序部署到 ELB。

我收到一个错误:

未给出文件名,部署现有版本 1

  • [错误] 部署失败:类型错误 [ERR_INVALID_ARG_TYPE]:“数据”参数必须是字符串、缓冲区、TypedArray 或 DataView 类型之一。接收类型未定义
  • [错误]节点运行失败,退出代码为 2

下面是我的main.yml文件

name: CI

on:
  push:
    branches:
    - dry-run-actions

jobs:
  build:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [10.x]

    steps:
      - uses: actions/checkout@v1

      # I'm removing the intermediate steps to make this code look shorter and these steps are running correctly.
      # In these steps I'm "Caching node_module", "npm install" and "npm run build"

      - name: Cache node modules …
Run Code Online (Sandbox Code Playgroud)

github-actions

8
推荐指数
1
解决办法
544
查看次数

如何从 GitHub 检查中删除 Azure Pipeline Build

我刚刚为 GitHub 存储库设置了 CI/CD。

  • 验证拉取请求的 CI 构建被设置为 GitHub Action。
  • CD 构建(应在合并拉取请求后运行)是使用 Azure Pipelines 设置的,因为我也想使用生成的工件作为使用 Azure Pipelines 的发布管道的触发器。

唯一仍然困扰我的是,CD 构建也会自动触发拉取请求,但我不知道在哪里可以配置这些检查。

创建拉取请求时当前运行的检查如下: 在此输入图像描述

我想在这里摆脱持续交付构建。

我尝试配置分支保护规则,但这没有效果: 在此输入图像描述

在Azure Pipeline端,我完全禁用了触发器: 在此输入图像描述 在此输入图像描述

但这对我来说也没有明显的影响。

continuous-integration continuous-deployment azure-pipelines github-actions

7
推荐指数
1
解决办法
2587
查看次数

“NODE_AUTH_TOKEN”和“NPM_AUTH_TOKEN”有什么区别?

我正在使用一些 github 操作在单一存储库中发布我的一个包,包含大约 4-5 个包,例如:

github-repository (monorepo):
- folder_1 (package 1)
- folder_2 (package 2)
- folder_3 (package 3)
Run Code Online (Sandbox Code Playgroud)

对于位于此 monorepo 中的每个包,当发布与版本匹配的标签时,该操作将使用工作流程(对于所有包几乎相同)来释放它:

github-repository (monorepo):
- folder_1 (package 1)
- folder_2 (package 2)
- folder_3 (package 3)
Run Code Online (Sandbox Code Playgroud)

每个包都有自己的操作工作流程.yaml并且工作正常,除了我刚刚创建的新包:package 4 (located in github-repository/folder_4)

它是一个基本包,只是它只包含配置文件,因此它的yarn build脚本只会复制./dist文件夹中的这些文件,而不暗示节点或javascript,使其工作流程如下所示:

name: Config Release
on:
  push:
    tags:
      - package4/v*

permissions:
  contents: read
  packages: write

jobs:
  release:
    name: Release
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: folder_4

    steps:
      - name: Checkout source code …
Run Code Online (Sandbox Code Playgroud)

npm-registry github-actions

7
推荐指数
1
解决办法
5778
查看次数