开发问题:GitHub Actions上传打包缺失.vite/mainfest.json文件
公众号: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 文件,导致项目在运行时因缺少这个文件出现了报错。
解决方案
经过定位发现问题出现在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
之前把文件压缩成压缩包,然后直接上传压缩包。这样也是可以上传隐藏的文件夹和文件的。