Javascript 为什么.sh shell脚本可以在Concourse教程中工作,而不能在我的实际代码库中工作?

Javascript 为什么.sh shell脚本可以在Concourse教程中工作,而不能在我的实际代码库中工作?,javascript,continuous-integration,yaml,concourse,Javascript,Continuous Integration,Yaml,Concourse,非常熟悉CI系统设置,所以请温柔:) 我正在执行一个命令&试图让一个Concourse CI任务yml运行它通过输入文件夹找到的shell脚本: task.yml --- platform: linux image_resource: type: docker-image source: {repository: busybox} inputs: - name: my-input-folder run: path: ./my-input-folder/my-shell-scri

非常熟悉CI系统设置,所以请温柔:)

我正在执行一个命令&试图让一个Concourse CI任务yml运行它通过输入文件夹找到的shell脚本:

task.yml

---
platform: linux

image_resource:
  type: docker-image
  source: {repository: busybox}

inputs:
- name: my-input-folder

run:
  path: ./my-input-folder/my-shell-script.sh
所以当我跑步时:

fly--target team name execute--config task.yml-i我的输入文件夹=我的输入文件夹

它应该进入那个文件夹,action
myshell script.sh
并回显那里的
这正在工作

相反,我得到:

hijack: Backend error: Exit status: 500, message: {"Type":"","Message":"runc exec: exit status 1: exec failed: container_linux.go:264: starting container process caused \"exec: \\\"./__tests__/this-is-my-shell-script.sh\\\": permission denied\"\n","Handle":""}
我知道这与docker/busybox图像有关

但是

a) 为什么在他们的教程中使用相同的
.sh
扩展名和
busybox
图像?(但当我在实际项目中使用它时就不是了?)


b) 如何解决这个问题,使我的项目运行shell脚本?哪个docker映像可以工作?

我通过同事发现此错误是由于:

a) 需要
chmod+x folder/name of file.sh
,因此它是一个可执行文件

b) 正在添加
#/bin/sh
到我的
.sh
文件的开头(因为我正在使用oh my zsh)。虽然我推测如果我使用bash,这将是
#/bin/bash


现在,shell脚本链接正常。

我将图像更改为ubuntu图像,效果良好,但alpine也不起作用。Ubuntu更胖,有更多的初始sh命令。轻量级(alpine、busybox)的sh命令更少

source: {repository: ubuntu}
a) 由于它是在那里的git中创建的,所以在那里的文件中设置了权限,所以运行良好。当您修改它或创建新文件时,它不会工作,因为权限已更改。我假设您正在使用windows计算机

b) 解决方案是更改git-index权限git-updateindex--chmod=+x/path/to/file。如果您仅更改文件本地权限,则可能会起作用,因为您正在尝试运行一次性任务,但一旦开始使用concourse git资源,您将在本教程的后续部分遇到该资源,这将给您带来麻烦

提及