标签: github-actions

禁用 Github Action 工作流程,仅在需要时运行

我有一些非常昂贵的基准/测试,我只想在一些 PR 上运行,而不是全部。有没有办法通过 github actions 来做到这一点?

continuous-integration github github-actions building-github-actions

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

Github 操作按推送路径过滤作业或步骤

我们有一些操作可以逻辑地分组到一个工作流程中,但并非所有操作都需要始终运行。

我知道

on:
  push:
    paths:
    - 'docs/**'
Run Code Online (Sandbox Code Playgroud)

有没有办法将这些信息应用于特定的工作或步骤?

github-actions

13
推荐指数
1
解决办法
7044
查看次数

如何在作业结束时运行脚本,即使作业已取消?

这是我目前在 GitHub 上使用的工作流程

name: Windows10 - CI
on: [ push ]
jobs:
  run-test:
    runs-on: [ self-hosted, windows, DO ]
    steps:
      - uses: actions/checkout@v2
        with:
          clean: false

      - name: Run nds2 CI - Sanity Test
        if: github.ref == 'refs/heads/master'
        run: cd c:\actions-runner\_work\nds2\nds2 ; python3 ci_host.py --master

      - name: Run nds2 CI - Build Installer
        if: github.ref != 'refs/heads/master'
        run: cd c:\actions-runner\_work\nds2\nds2 ; python3 ci_host.py
Run Code Online (Sandbox Code Playgroud)

我有一台 Windows 10 计算机,它使用 GitHub 运行程序侦听传入的作业。在传入作业时,如果向 master 分支进行推送,则脚本 ci_host.py 将使用“--master”标志运行,该标志会启动虚拟机并对其运行多个测试。最终,在测试结束时,脚本将虚拟机恢复到预先配置的快照。

所以基本上我想要实现的是,当通过 GitHub actions Web 界面取消作业时,处理测试的脚本将在作业中被取消,并且没有机会将虚拟机恢复到之前的状态干净状态(快照)。

即使作业被取消,如何运行将在工作流程结束时运行的脚本?因此,无论发生什么情况,我的虚拟机都可以恢复到干净的状态

在此先感谢您的帮助 …

workflow continuous-integration yaml github github-actions

13
推荐指数
1
解决办法
5027
查看次数

如何使用 GitHub 操作替换表达式中的字符串

这是我返回的操作,$TOXENV看起来像这样,py3.6-django2.2我希望$TOXENV看起来像这样,而py36-django22不是有任何替代/替换函数可以用来替换.char 吗?

name: CI
on:
  workflow_dispatch:
    branches: [ master, actions ]
jobs:
  demo:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python: [3.6, 3.7, 3.8, 3.9]
        django: ['2.2', '3.0']
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v1
        name: Set up Python ${{ matrix.python }} ${{ matrix.django }}
        with:
          python-version: ${{ matrix.python }}
      - name: python version
        env:
            TOXENV: "py${{ matrix.python }}-django${{ matrix.django }}"
        run:
          echo $TOXENV
Run Code Online (Sandbox Code Playgroud)

github-actions

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

GitHub Actions 忽略目录中的某些文件

我有一个使用 GitHub Actions 的项目。我现在需要忽略某些文件夹内的某些文件更改。这是我的项目结构:

masterDir
 - contentDir
   - dir1
     - file1.ignore.md
     - file2.md
  -  dir2
     - file3.md
     - file4.ignore.md
Run Code Online (Sandbox Code Playgroud)

因此,我希望对文件名中包含ignore.md 的任何文件进行任何更改都不会触发我的GitHub 操作。这就是我想出的办法,但这似乎不起作用。

on:
  push:
    paths-ignore:
      - 'README.md'
      - 'backup/**'
      - 'masterDir/contentDir/**/*.draft.md'
Run Code Online (Sandbox Code Playgroud)

关于我的通配符匹配有什么问题有什么想法吗?

github-actions

13
推荐指数
1
解决办法
9893
查看次数

绕过 GitHub 中所需的状态检查

我正在尝试使用 GitHub Actions 在构建工件时自动增加项目的版本,并将新更改签回主分支。

工作流程使用仅用于此目的的帐户的 PAT 推送提交,因此我能够将该用户从需要主分支 PR 的分支保护规则中排除。

因为该分支还需要进行状态检查,所以推送失败并显示

remote: error: GH006: Protected branch update failed for refs/heads/main.        
remote: error: Required status check "build / tests" is expected.   
Run Code Online (Sandbox Code Playgroud)

如何让版本提交跳过此检查,同时对所有其他提交强制执行此检查?

github github-actions

13
推荐指数
2
解决办法
8427
查看次数

Github actions 作业无缘无故被取消

我正在尝试为我的一个项目设置一个 github 操作脚本。该项目目前是私有的,因为我希望它在第一次发布之前处于 RC 状态。由于它已接近准备就绪,我打算现在设置一个自动构建,但我看到了一些奇怪的行为。该项目是一个简单的 C# 库,因此 .yml 文件非常简单:


name: .NET Core Desktop

on: [push, pull_request]

jobs:

  build:

    strategy:
      matrix:
        configuration: [Debug, Release]

    runs-on: windows-latest  

    env:
      Solution_Name: Replacement.sln                         # Replace with your solution name, i.e. MyWpfApp.sln.
      Test_Project_Path: UnitTest.csproj                 # Replace with the path to your test project, i.e. MyWpfApp.Tests\MyWpfApp.Tests.csproj.

    steps:
    - name: Checkout
      uses: actions/checkout@v3
      with:
        fetch-depth: 0

    # Run build
    - name: Run build
      run: ./build.cmd --target pack --configuration ${{ matrix.configuration }}
Run Code Online (Sandbox Code Playgroud)

有时,其中一个构建(调试或发布,或两者)都会失败,并出现以下条目

Terminate batch job (Y/N)? 
Error: The …
Run Code Online (Sandbox Code Playgroud)

build github-actions

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

包缺少 Info.plist 或 CFBundlePackageType 不是“APPL”或“FMWK”。无法验证您的申请。(-21017)

我正在尝试使用 Github Actions 将捆绑包上传到 Appstore,以获取具有多个目标的应用程序(每个环境一个:内部、客户端和零售)。我收到此错误:

\n

*** 错误:上传“build/Products/IPA/myapp.ipa”时出错。\n*** 错误:无法确定包\xe2\x80\x99s 捆绑包 ID。该包缺少 Info.plist 或 CFBundlePackageType 不是 \xe2\x80\x98APPL\xe2\x80\x99 或 \xe2\x80\x98FMWK\xe2\x80\x99。无法验证您的申请。(-21017)\n{\nNSLocalizedDescription = “无法确定包\\U2019s 捆绑包 ID。该包缺少 Info.plist 或 CFBundlePackageType 不是 \\U2018APPL\\U2019 或 \\U2018FMWK\\U2019。” ;\nNSLocalizedFailureReason = "无法验证您的应用程序。";\n}

\n

我已经有了带有 APPL 的 CFBundlePackageType。我还尝试将其更改为 FMWK。\n这是文件夹相应目标中 Info.plist 的内容:

\n
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n    <key>CFBundleDevelopmentRegion</key>\n    <string>en</string>\n    <key>CFBundleDisplayName</key>\n    <string>$(PRODUCT_NAME)</string>\n    <key>CFBundleExecutable</key>\n    <string>$(EXECUTABLE_NAME)</string>\n    <key>CFBundleIdentifier</key>\n    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n    <key>CFBundleInfoDictionaryVersion</key>\n    <string>6.0</string>\n    <key>CFBundleName</key>\n    <string>$(PRODUCT_NAME)</string>\n    <key>CFBundlePackageType</key>\n    <string>APPL</string>\n    <key>CFBundleShortVersionString</key>\n    <string>$(MARKETING_VERSION)</string>\n    <key>CFBundleSignature</key>\n    <string>????</string>\n    <key>CFBundleURLTypes</key>\n    <array>\n        <dict>\n            <key>CFBundleTypeRole</key>\n            <string>Editor</string>\n            <key>CFBundleURLName</key>\n            <string>com.myapp.internal</string>\n            <key>CFBundleURLSchemes</key>\n            <array>\n                <string>com.myapp.internal</string>\n            </array>\n        </dict>\n    </array>\n …
Run Code Online (Sandbox Code Playgroud)

bundle info.plist github-actions

13
推荐指数
1
解决办法
3741
查看次数

使用最新版本的 GitHub Action

是否可以在工作流程中使用 Marketplace 中已发布的 GitHub Action 的最新版本?

如果有可能的话那就太好了:

      - name: "TODO to Issue"
        uses: "alstr/todo-to-issue-action@latest"
Run Code Online (Sandbox Code Playgroud)

例如,对于某个npm包,您可以npm install node@latest使用该包的最新版本。

在操作页面上,当您单击“使用最新版本”时,会显示以下对话框,其中版本号是硬编码的:

示例动作

github github-actions

13
推荐指数
1
解决办法
4409
查看次数

当拉取请求来自分叉存储库时,无法触发 GitHub Actions

有一个带有 GitHub Actions 工作流程的私有存储库。当我在此存储库中的分支之间创建拉取请求时,会正确触发 GitHub Actions 工作流程。

name: CI

on:
  pull_request:
    branches:
      - pre-production
      - production

jobs:
  build:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 2
...
Run Code Online (Sandbox Code Playgroud)

但是,当另一个仅具有读取权限的开发人员分叉此存储库、进行一些提交,然后创建到Upstream 的拉取请求时,不会触发 GitHub Actions 工作流程。我已确认他们已向正确的分支创建了拉取请求。

是否有设置允许其他具有读取权限的开发人员触发上游中的 GitHub Actions 工作流程?


更新:

存储库设置中有一个名为“从 fork pull requests 运行工作流”的选项,但我无法启用它。

github github-actions

13
推荐指数
1
解决办法
4356
查看次数