I am trying to get my Concourse CI Linux VM to run a shell script. But i keep getting the same error:
I fixed this locally (non VM, on a Mac) with chmod +x path/filename.sh
to make it executable and adding !#/bin/sh
to the shell script.
But i dont know how to get Concourse/VM to know that it’s an executable? Is there a chmod command i should put into the task.sh? or the task.yml? Help!
my Concourse CI pipeline.yml
resources:
- name: my-git-repo
type: git
source:
uri: git@github.com:org-name/my-git-repo.git
branch: master
private_key: {{git-private-key}}
- name: my-task
type: git
source:
uri: git@gist.github.com:blahblahblah12345678910blah.git
private_key: {{git-private-key}}
jobs:
- name: job-build-app
plan:
- get: my-git-repo
trigger: true
- get: task
- task: run-build
file: my-task/task.yml
My task.yml
:
---
platform: linux
image_resource:
type: docker-image
source: {repository: busybox}
inputs:
- name: my-task
run:
path: ./my-task/task.sh
My task.sh
:
!#/bin/sh
echo this is my task shell script
I expected this to just echo/log out the string above.
Instead i get the 500/permission denied error at the top.
Advertisement
Answer
The file in the git repo has to be chmod +x
ed. You’re gonna have a hard time doing that in a Gist, since that can’t be set in the UI.
You could clone the gist, chmod +x
, and re-push, or change your task to run bash my-task/task.sh
instead, which won’t require it to be executable:
run:
path: bash
args: [./my-task/task.sh]