Hi,
Thank you all for your helpful comments - I have written them down in my
notebook to make sure that I can retain what I've learned here. The
authentication problem is fixed, it seems that there may have been a
whitespace in there. Have used a GOCD token which works.
My next problem is "Permission denied". I had originally thought this meant
that my authentication was wrong, but after I went thru and put the new
token in and checked, it seems that the auth isn't the main problem. I am
running a script to pull the pipelines from a group, and to approve all of
them (if they haven't been approved already). If you guys have some free
time, could I please ask for your help on this?
*My first script (pushGames.sh):*
#! /bin/bash
curl "https:// {companyName}
/go/api/admin/pipeline_groups/${PIPELINE_GROUP}" \
-H "Authorization: Bearer ${GOCD_ACCESS_TOKEN}" \
-H 'Accept: application/vnd.go.cd.v1+json' \
| jq -r '.pipelines[] | select(.name | contains("Games-")).name' >
testEnvGamesList.txt
cat testEnvGamesList.txt | while read line
do
echo The current pipeline is: $line
./gocd/game-deploy/pushOneGame.sh $line
done
rm testEnvGamesList.txt
*My second script (pushOneGame.sh):*
#! /bin/bash
fetchPipelineHistory=$( curl " {companyName}
/go/api/stages/$1/Approve/history" \
-H "Authorization: Bearer ${GOCD_ACCESS_TOKEN}" \
-H 'Accept: application/vnd.go.cd.v2+json')
getResultOfCurrentStage=$( echo $fetchPipelineHistory | jq -r
'.stages[].result')
counter=$( echo $fetchPipelineHistory | jq -r '.stages[0].counter')
if [ "$getResultOfCurrentStage" != "Passed" ]
then
echo "https:// {companyName} /go/api/stages/$1/$counter/Approve/run"
curl "https:// {companyName} /go/api/stages/$1/$counter/Approve/run" \
-H "Authorization: Bearer ${GOCD_ACCESS_TOKEN}" \
-H 'X-GoCD-Confirm: true' \
-H 'Accept: application/vnd.go.cd.v2+json' \
-X POST
fi
I am running these in the task config:
Command: /bin/sh
Arguments: ./{companyName}/game-deploy/pushGames.sh
Both scripts are in the game-deploy folder.
When running this in VS Code (I have it set up to use LF for my end of line
so should work with GOCD and Bash), it works. In VScode, I run the
"pushOneGame.sh" script, replacing $1 with the name of one pipeline. This
works. However, when leaving it as code inside GOCD, it gives me the
"permission denied". What did I miss here? I went to Admin > Security >
Role config and checked that I was assigned the dev role. There is a
message saying the plugins do not support role based authorization. Does
this mean I need to request to be given Admin role to check?
@fenn, thanks for linking me to some learning resources, I've saved them
and will try to look into them when I am not on work hours.
Cheers,
Gabes.
On Mon, Feb 22, 2021 at 7:17 AM Fenn <[email protected]> wrote:
> GoCD borrows from Java standards / defacto standards and also from
> Linux standards / defacto standards. It may not be convenient but
> learning something about shell notation and Java prior art (e.g. Ant)
> can be useful. The best books I can recommend to learn Linux / Unix
> shell are Unix Power Tools and Unix in a Nutshell.
>
> https://www.goodreads.com/book/show/172314.UNIX_Power_Tools
>
> https://www.goodreads.com/book/show/331673.UNIX_in_a_Nutshell
>
> Everything you ever wanted to know about the Linux shell (bash) may be
> found in the man page (Linux Manual Page) a copy of which is here:
>
> https://linux.die.net/man/1/bash
>
> But it is not an easy read for a beginner.
>
> You might also want to google for "bash tutorial" or "bash beginner
> tutorial" to get the hang of things. GoCD uses bash on Linux.
>
> Once you understand how bash works some of these GoCD behaviors might
> make more sense.
>
> It also helps to understand Java prior art such as Apache Ant. Ant
> documentation on how properties (and environment variables) are used
> is here:
>
> https://ant.apache.org/manual/properties.html
>
> https://ant.apache.org/manual/Tasks/property.html
>
> I found this quote particularly instructive:
> "When Ant started to support setting properties from environment
> variables it ran on Java 1.2 where System.getEnv didn't work. So we
> decided to start a command in a new process which prints the
> environment variables, analyzes the output and creates the properties.
> Once Java 5 became our baseline we could have switched to getEnv but
> it returned different results on some platforms so we stuck with the
> command approach to remain backwards compatible."
>
> What this basically says is that at one time Java made environment
> variables very hard - so people tended to avoid them in the Java world
> - and used Properties instead (while the whole rest of the world, and
> all other programming languages, used Environment Variables). GoCD
> uses both. Sort of. You will see there there are places you can set
> Environment Variables in GoCD where you cannot set Properties.
>
> You will quickly notice how Ant uses properties is similar to how Bash
> uses environment variables. CoCD tries to use both.
>
> On Windows I think GoCD uses CMD.EXE - some documentation for that is here:
>
> https://ss64.com/nt/cmd.html
>
> Once you understand Environment Variables in Bash and CMD.EXE and
> understand Properties in Ant, GoCD makes more sense.
>
> General Note on GoCD Documentation:
>
> The behavior of GoCD is controlled by the XML configuration. The Web
> UI documentation assumes that you already understand the XML, so it
> doesn't always explain exactly what the Web UI does.
>
> I have often found it helpful to read the "Configuration Reference"
> for segments of the "Config XML" which are related to the GoCD Web UI
> changes that I am trying to make.
>
> https://docs.gocd.org/current/configuration/configuration_reference.html
>
> Brian Fennell
>
> --
> You received this message because you are subscribed to the Google Groups
> "go-cd" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/go-cd/CAGJwi9gftjW9%3DDZnbQTsKoitEwSXxp8JHC1_RH1SakPaRT1_bw%40mail.gmail.com
> .
>
--
You received this message because you are subscribed to the Google Groups
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/go-cd/CAKV4bkehET%3DvU40h8xZpF3zy5vx67Zhee-fdsAM%3DZQyBdvOH1Q%40mail.gmail.com.