开发问题:GitHub Actions上传打包缺失.vite/mainfest.json文件

本文发布于 2024年12月16日,阅读 7 次,点赞 0 次,归类于 开发问题记录


博客:
https://www.emanjusaka.top

公众号:emanjusaka的编程栈

by emanjusaka from https://www.emanjusaka.top/2024/12/upload-artifact-action-hidden-files 彼岸花开可奈何

本文为原创文章,可能会更新知识点以及修正文中的一些错误,全文转载请保留原文地址,避免未即时修正的错误误导。

我的一个前端项目使用了 GitHub Actions 工作流程来自动打包项目

 name: build-action
 ​
 on:
   push:
     branches:
       - main
   pull_request:
     branches:
       - main
   workflow_call:
 ​
 jobs:
   build:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout Repo
         uses: actions/checkout@v4
 ​
       - name: Setup Node.js
         uses: actions/setup-node@v4
         with:
           node-version: "20"
 ​
       - name: Setup pnpm
         uses: pnpm/action-setup@v4
         with:
           version: 9
           run_install: false
 ​
       - name: Get pnpm store directory
         id: pnpm-cache
         run: echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
 ​
       - name: Setup pnpm cache
         uses: actions/cache@v4
         with:
           path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
           key: ${{ runner.os }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
           restore-keys: |
             ${{ runner.os }}-pnpm-store-
 ​
       - name: Install Dependencies
         run: pnpm install
 ​
       - name: Build Theme
         run: |
           pnpm build
       - name: Make Build Directory
         run: |
           BUILD_DIR=dist
           mkdir $BUILD_DIR
           cp -r theme.yaml settings.yaml templates $BUILD_DIR/
 ​
       - name: Upload artifact
         uses: actions/upload-artifact@v4
         with:
           name: ${PACKAGE_NAME}
           path: dist/
           retention-days: 7
 ​

打包好后上传到 github 中,在上传的打包项目中我发现缺少了.vite/mainfest.json 文件,导致项目在运行时因缺少这个文件出现了报错。

image-20241216193505985

解决方案

经过定位发现问题出现在actions/upload-artifact@v4这一步操作上,然后我去查找了一下资料。

发现 GitHub 修改了规则,从 2024 年 9 月 2 日起不再将隐藏文件和文件夹作为 v3 和 v4 upload-artifact操作的默认上传的一部分。如果需要上传隐藏文件和文件夹需要使用新配置include-hidden-files来继续上传。

       - name: Upload artifact
         uses: actions/upload-artifact@v4
         with:
           include-hidden-files: true
           name: ${PACKAGE_NAME}

可以在这里了解更多相关信息。

还有一种方式,可以在调用upload-artifact之前把文件压缩成压缩包,然后直接上传压缩包。这样也是可以上传隐藏的文件夹和文件的。

本篇完