我创建了一个 github 操作作业来下载 appsettings.json 文件,但 github 操作无法找到我的 appsettings.json 文件的路径。
我有一个 .net 应用程序,我的文件结构如下所示:
[SolutionFolder]
-> .github
-> workflows
-> artifacts.yml
-> APIProject
-> appsettings.json
-> UIProject
-> appsettings.json
这就是我的 artifacts.yml 中的内容:
name: App Settings Variable Substitution
on:
pull_request:
types:
- opened
- synchronize
paths:
- 'UIProject/appsettings.json'
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- name: Swap appsettings vals
uses: microsoft/variable-substitution@v1
with:
files: 'UIProject/appsettings.json'
env:
ApiKey: ${{ secrets.API_KEY }}
archive-build-artifacts:
runs-on: ubuntu-latest
steps:
- name: Download appsettings
uses: actions/upload-artifact@v3
with:
name: dev-settings
path: UIProject/appsettings.json
if-no-files-found: error
syncconfig 似乎在 archive-build-artifacts 作业之后运行。我不知道为什么。 archive-build-artifacts 作业失败并出现以下错误:未在提供的路径中找到文件:UIProject/appsettings.json。不会上传任何工件。 syncconfig 作业运行并通过。如何正确设置路径,以便它找到 archive-build-artifacts 作业的 appsettings 文件?
上传工件时,您可以指定单个文件或目录,也可以指定多个文件或目录。
但是,为此,您需要运行程序通过使用 checkout 操作来访问存储库结构。
在这里,您在不同的运行器中使用
actions/checkout
和 actions/upload-artifact
,它们之间没有任何关系(因为您使用的是 github 运行器,而不是自托管的运行器)。
因此,您需要更新配置,或者在第一个作业中使用
actions/upload-artifact
操作,或者在第二个作业中使用 actions/checkout
。
示例:
jobs:
syncconfig:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Swap appsettings vals
uses: microsoft/variable-substitution@v1
with:
files: 'UIProject/appsettings.json'
env:
ApiKey: ${{ secrets.API_KEY }}
- name: Download appsettings
uses: actions/upload-artifact@v3
with:
name: dev-settings
path: UIProject/appsettings.json
if-no-files-found: error