Hoping someone can help. I am experiencing difficulty making a curl POST request with JSON data from a gitlab CI job.
The curl request works fine in a local terminal session, (N.B I did not use double quotes in terminal session). If I do not escape double quotes in the gitlab CI yaml I get the error curl: (3) [globbing] nested brace in column 112
If I escape the double quotes in the GitLab CI job, as shown below I get the error:
curl: (3) [globbing] unmatched brace in column 1
In all cases I get the error /bin/bash: line 134: warning: here-document at line 134 delimited by end-of-file (wanted `EOF')
Is it possible to POST JSON data using here-documents from a GitLab CI job?
.gitlab-ci.yml job extract
release:
  image: node:12-stretch-slim
  stage: release
  before_script:
    - apt-get update && apt-get install -y curl git jq
  script:
    - version=$(git describe --tags | cut -d'-' -f 1 | sed 's/^v*//')
    - echo "generating release for version ${version}"
    - npm pack
    # - >
    #   url=$(curl
    #   --header "Private-Token: $API_TOKEN"
    #   -F "file=@${CI_PROJECT_DIR}/objectdetection-plugin-${version}.tgz" "https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/uploads"
    #   |
    #   jq '.url')
    - url="http://www.example.com"
    - echo "Retrieved url from file upload as ${url}"
    - echo "The full url would be ${CI_PROJECT_URL}/${url}"
    - >
      curl -X POST https://requestbin.io/1f84by61
      --header 'Content-Type: application/json; charset=utf-8'
      --data-binary @- << EOF
      {
        \"name\": \"Release v${version}\",
        \"tag_name\": \"v${version}\",
        \"ref\": \"v${version}\",
        \"description\": \"Test\",
        \"assets\": {
          \"links\": [
            {
              \"name\": \"objectdetection-plugin-source\",
              \"url\": \"CI_PROJECT_URL/${url}\",
              \"filepath\": \"${url}\",
              \"link_type\": \"other\"
            }
          ]
        }
      }
      EOF
  when: manual
  only:
    - /^release-.*$/
 
    