我有一些非常昂贵的基准/测试,我只想在一些 PR 上运行,而不是全部。有没有办法通过 github actions 来做到这一点?
continuous-integration github github-actions building-github-actions
我们有一些操作可以逻辑地分组到一个工作流程中,但并非所有操作都需要始终运行。
我知道
on:
push:
paths:
- 'docs/**'
Run Code Online (Sandbox Code Playgroud)
有没有办法将这些信息应用于特定的工作或步骤?
这是我目前在 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 界面取消作业时,处理测试的脚本将在作业中被取消,并且没有机会将虚拟机恢复到之前的状态干净状态(快照)。
即使作业被取消,如何运行将在工作流程结束时运行的脚本?因此,无论发生什么情况,我的虚拟机都可以恢复到干净的状态
在此先感谢您的帮助 …
这是我返回的操作,$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 的项目。我现在需要忽略某些文件夹内的某些文件更改。这是我的项目结构:
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 在构建工件时自动增加项目的版本,并将新更改签回主分支。
工作流程使用仅用于此目的的帐户的 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 操作脚本。该项目目前是私有的,因为我希望它在第一次发布之前处于 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) 我正在尝试使用 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) 是否可以在工作流程中使用 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 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 运行工作流”的选项,但我无法启用它。