如何在github actions中指定创建artifact的路径?

问题描述 投票:0回答:1

我创建了一个 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 文件?

github-actions appsettings
1个回答
0
投票

如官方文档中指定的

上传工件时,您可以指定单个文件或目录,也可以指定多个文件或目录。

但是,为此,您需要运行程序通过使用 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
© www.soinside.com 2019 - 2024. All rights reserved.