[go] Task: /bin/sh -x ./gocd/game-deploy/pushGames.shtook: 0.130s + curl https://{COMPANY NAME}/go/api/admin/pipeline_groups/PHY-Test-Deploy -H Authorization: Bearer ****** -H Accept: application/vnd.go.cd.v1+json + jq -r .pipelines[] | select(.name | contains("Games-")).name % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 11098 0 11098 0 0 99089 0 --:--:-- --:--:-- --:--:-- 99089 + + readcat line testEnvGamesList.txt + echo The current pipeline is: Games-AcesHigh-PHY-Test + ./gocd/game-deploy/pushOneGame.sh Games-AcesHigh-PHY-Test The current pipeline is: Games-AcesHigh-PHY-Test ./gocd/game-deploy/pushGames.sh: 13: ./gocd/game-deploy/pushGames.sh: ./gocd/game-deploy/pushOneGame.sh: Permission denied + read line The current pipeline is: Games-CandyCash-PHY-Test + echo The current pipeline is: Games-CandyCash-PHY-Test + ./gocd/game-deploy/pushOneGame.sh Games-CandyCash-PHY-Test ./gocd/game-deploy/pushGames.sh: 13: ./gocd/game-deploy/pushGames.sh: ./gocd/game-deploy/pushOneGame.sh: Permission denied (this goes on to list all the other games, i've removed their output to reduce clutter but they all say the same things as the above 2 game output).
+ rm testEnvGamesList.txt [go] Task status: passed, took: 0.130s [go] Current job status: passed On Mon, Feb 22, 2021 at 12:13 PM Marques Lee <[email protected]> wrote: > Can you change your task config invoke the script with bash -x and paste > the exact output? > > That is: > > Command: /bin/bash > Args: > -x > /path/to/your/script.sh > > > On Sun, Feb 21, 2021 at 2:56 PM Gabriel Callaghan < > [email protected]> wrote: > >> 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 >> <https://groups.google.com/d/msgid/go-cd/CAKV4bkehET%3DvU40h8xZpF3zy5vx67Zhee-fdsAM%3DZQyBdvOH1Q%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > 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/CAPKX9jbeF4J0Pg9HuW-f8eysFxtyc0N%3D7wW-pCkPDVnW4mfxfQ%40mail.gmail.com > <https://groups.google.com/d/msgid/go-cd/CAPKX9jbeF4J0Pg9HuW-f8eysFxtyc0N%3D7wW-pCkPDVnW4mfxfQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- 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/CAKV4bkeddTykAiwoVK7kOU%2B7LfVqws9rorNaNsnirihahqxShg%40mail.gmail.com.
