如何用Github Action在同仓库不同分支复制指定文件夹并修复Copycat报错
跨分支复制文件Github Action问题解决方案
报错原因排查
你遇到的fatal: could not read Password for 'https://github.com': No such device or address错误,可按以下优先级排查问题:
- 首先检查个人访问令牌(PAT)的配置:你创建的PAT必须勾选
repo全量权限,如果是企业私有仓库还要额外开启repo:enterprise权限;同时确认你是将PAT存储在当前私有仓库的Secrets配置项中,Secrets的名称必须和配置里的PERSONAL_TOKEN完全一致,大小写不能出错 - 你原有配置里
src_path: static.、src_path: dist.末尾多余的.是错误写法,应该改为static/、dist/,否则会找不到对应路径引发异常 - 第二个Copycat任务里的
dst_branch: des存在拼写错误,需要和第一个任务的目标分支名dest保持一致
配置优化方案
你现有配置里写了两次Copycat任务,可以合并为一个减少运行耗时,优化后配置如下:
name: Copying static files on: push: branches: - src # 设置触发部署的分支 jobs: copy: runs-on: ubuntu-latest steps: - name: 复制static和dist文件夹 uses: andstor/copycat-action@v3 with: personal_token: ${{ secrets.PERSONAL_TOKEN }} src_path: | static/ dist/ dst_path: / dst_owner: CompanyX dst_repo_name: MyRepo dst_branch: dest src_branch: src src_wiki: false dst_wiki: false
无第三方依赖的替代方案
如果你不想依赖第三方Action,也可以用Github官方的actions/checkout直接实现同仓库跨分支复制文件,逻辑更稳定,不存在第三方权限风险:
name: 复制静态文件到目标分支 on: push: branches: - src jobs: copy-files: runs-on: ubuntu-latest steps: # 检出源分支内容 - name: 检出src分支 uses: actions/checkout@v4 with: ref: src path: src-branch # 检出目标分支内容 - name: 检出dest分支 uses: actions/checkout@v4 with: ref: dest path: dest-branch persist-credentials: false fetch-depth: 0 # 复制指定文件夹 - name: 复制static和dist文件夹 run: | cp -rf src-branch/static dest-branch/ cp -rf src-branch/dist dest-branch/ # 提交并推送更改 - name: 提交更改并推送 run: | cd dest-branch git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git add static/ dist/ git commit -m "chore: 更新src分支静态文件" || echo "无需要提交的更改" git push https://${{ secrets.PERSONAL_TOKEN }}@github.com/CompanyX/MyRepo.git dest
内容的提问来源于stack exchange,提问作者Niloo Aghayan
相关产品推荐
相关产品推荐

