Execute curl on deployment

Hi I set up an environment variable called $DEPLOY_STG which has a value similar to this

curl -H "Content-Type: application/json" --data '{"source_type": "Branch", "source_name": "dev"}' -X POST https://registry.hub.docker.com/.....

And in my circleci.yml I have this

The problem is that in the logs of circleci apparently it doesn’t recognize the curl command parameters, should I escape them somehow? and if so, how? I’ve tried single quotes, double quotes, slashes but couldn’t get it right yet.

thanks in advance


This isn’t CircleCI’s behavior, this is bash’s behavior:

$ DEPLOY_STG="curl -H \"Content-Type: application/json\" --data '{\"source_type\": \"Branch\", \"source_name\": \"dev\"}' -X example.com"
curl: (6) Could not resolve host: application
curl: (6) Could not resolve host: "Branch",
curl: (6) Could not resolve host: "source_name"
curl: (3) [globbing] unmatched close brace/bracket in column 6

The short explanation for this behavior is that bash splits arguments on spaces:

$ DEPLOY_STG="cat \"a b\""
cat: "a: No such file or directory
cat: b": No such file or directory


$ cat "a b"
cat: a b: No such file or directory

A nice way to solve the problem is to use bash -c:

$ DEPLOY_STG="curl -H \"Content-Type: application/json\" --data '{\"source_type\": \"Branch\", \"source_name\": \"dev\"}' -X POST example.com"
$ bash -c "$DEPLOY_STG"
<!doctype html>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    div {
        width: 600px;
        margin: 5em auto;
        padding: 50px;
        background-color: #fff;
        border-radius: 1em;
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    @media (max-width: 700px) {
        body {
            background-color: #fff;
        div {
            width: auto;
            margin: 0 auto;
            border-radius: 0;
            padding: 1em;

    <h1>Example Domain</h1>
    <p>This domain is established to be used for illustrative examples in documents. You may use this
    domain in examples without prior coordination or asking for permission.</p>
    <p><a href="http://www.iana.org/domains/example">More information...</a></p>
1 Like

thanks. haven’t known that.

Still not working…

@anon1959517 This is the value I set in circleci

curl -H \"Content-Type: application/json\" --data '{\"source_type\": \"Branch\", \"source_name\": \"dev\"}' -X POST http://example.com

and what I have in my circleci.yml is

    branch: dev
      - bash -c "$DEPLOY_STG"

And I get this error now

It works for me. How are you setting it? Are you sure it’s the value you think?

@anon1959517 well the url is not http://example.com but something more like https://registry.hub.docker.com/u/something/whatever/trigger/9b9b3faa-bbcb-44a4-8a4c-05598e243a70/

the value is correct I mean I am copying and pasting into the “Environment Variables” section of circleci dashboard.

It works when i run it in my OSX from my terminal. but it doesn’t work when circleci triggers it.

Try this
DEPLOY_STG=“curl -H ‘Content-Type: application/json’ --data ‘{‘source_type’: ‘Branch’, ‘source_name’: ‘dev’}’ -X example.com