8

Does anyone know if it's possible to convert the curl command used to trigger builds in Gitlab-CI to a Powershell equivalent using Invoke-RestMethod?

Example curl command:

curl --request POST \
  --form token=TOKEN \
  --form ref=master \
  --form "variables[UPLOAD_TO_S3]=true" \
  https://gitlab.example.com/api/v3/projects/9/trigger/builds

This was taken from Gitlab's documentation page.

I found quite a few postings about converting a curl script for Powershell but I haven't had any luck in getting it to work. Here are some of the links I referenced:

Any help would be appreciated.

Community
  • 1
  • 1
Ifrit
  • 6,791
  • 8
  • 50
  • 79

2 Answers2

8

You can pass the token and the branch parameters directly in the URL. As for variables, putting it into the body variable should do the trick.

$Body = @{
    "variables[UPLOAD_TO_S3]" = "true"
}

Invoke-RestMethod -Method Post -Uri "https://gitlab.example.com/api/v3/projects/9/trigger/builds?token=$Token&ref=$Ref" -Body $Body
Fairy
  • 3,592
  • 2
  • 27
  • 36
  • Life safer! That did the trick. I didn't think about attaching the tokens directly within the URL. Thanx! – Ifrit Aug 18 '16 at 16:07
1

Alternatively you can pass all arguments in the body parameter:

$form = @{token = $CI_JOB_TOKEN;ref = $BRANCH_TO_BUILD; "variables[SERVER_IMAGE_TAG]" = $CI_COMMIT_REF_NAME}
Invoke-WebRequest -Method POST -Body $form -Uri https://gitlab.example.com/api/v4/projects/602/trigger/pipeline -UseBasicParsing
Klepto
  • 718
  • 1
  • 7
  • 14