Sending cURL command through Gitlab CICD file

Viewed 9

I have a .gitlab-ci.yml file. I need to send a cURL command to a REST API (documentation here). When I hardcode parameters like bearer, roomid it works and the message is received on the client (in this example a Webex Teams bot).

The below works (static entries for bearer, roomid and a message)

before_script:
  - export roomid
  - export bearer

.send_message:
  send:
    - |
      curl --location --request POST 'https://webexapis.com/v1/messages' \
      --header 'Authorization: Bearer M***0f' \
      --header 'Content-Type: application/json' \
      --data-raw '{
        "roomId" : "Y***Ri",
        "markdown" : "# Message formatted in markdown",
      }'

stages:
  - convert

convert:
  stage: convert
  script:
    - python3 convert.py -t dna_sites.xlsx
    - !reference [.send_message, send]
  variables:
    msg: "Conversion complete"

However, when I want to make it more generic by using values stored in Gitlab CICD variable section (bearer, roomid) or elsewhere in the .gitlab-ci..yml file (msg), I cannot get it to work. Therefor I'm referencing them through $ sign ($bearer, $roomid and $msg)

before_script:
  - export roomid
  - export bearer

.send_message:
  send:
    - |
      curl --location --request POST 'https://webexapis.com/v1/messages' \
      --header 'Authorization: Bearer $bearer' \
      --header 'Content-Type: application/json' \
      --data-raw '{
        "roomId" : "$roomid",
        "markdown" : "$msg",
      }'

stages:
  - convert

convert:
  stage: convert
  script:
    - python3 convert.py -t dna_sites.xlsx
    - !reference [.send_message, send]
  variables:
    msg: "Conversion complete"

My guess is I'm doing something wrong with the quotes ' or ".

0 Answers
Related