Github Actions自定义容器中执行Shell脚本提示找不到文件的问题
解决GitHub Actions自定义容器中
./scripts/plan.sh找不到的问题 以下是针对该报错的几种排查和解决方法:
验证文件路径与工作目录
先确认仓库中scripts/plan.sh文件存在,且Actions的工作目录正确。可以在步骤中添加调试命令,查看当前路径和文件结构:steps: - name: Checkout uses: actions/checkout@v3 - name: Debug directory structure run: | pwd ls -la ./scripts/ - name: Terraform Plan run: | npm install npm run plan为脚本添加可执行权限
Git默认不跟踪文件的可执行权限,即使本地脚本有权限,checkout到容器后可能丢失。在执行脚本前手动添加权限:- name: Terraform Plan run: | npm install chmod +x ./scripts/plan.sh npm run plan修正脚本的Shebang行
Alpine镜像默认没有bash解释器,如果你的plan.sh开头是#!/bin/bash,会因找不到bash而报错(表面显示脚本不存在)。将Shebang改为Alpine支持的sh:#!/bin/sh # 后续脚本内容明确工作目录
自定义容器默认工作目录是/,而Actions会将代码checkout到/__w/<你的仓库名>/<你的仓库名>目录。可以在Dockerfile中提前设置工作目录:FROM alpine:3.18.0 WORKDIR /app RUN apk add --no-cache \ python3 \ py3-pip \ terraform \ nodejs \ npm \ && pip3 install --upgrade pip \ && pip3 install --no-cache-dir awscli \ && rm -rf /var/cache/apk/*或者在Actions步骤中指定
working-directory:- name: Terraform Plan working-directory: ${{ github.workspace }} run: | npm install npm run plan
内容的提问来源于stack exchange,提问作者tryingToBeBetter
相关产品推荐
相关产品推荐

