circlecicircleci-workflowscircleci-orb

How to use variables with a circleci orb?


I am using the codedeploy orb to deploy my application to AWS and instead of hardcoding the values in there like application-name etc, i am trying to pass variables instead but the orb doesn’t seem to be respecting the variables.

This is my code

deploy:
    executor: aws-cli/default
    steps: 
      - aws-cli/setup:
          profile-name: my-role
      - checkout
      - run :
          name: "Set stage name"
          command: |
            stage=$(echo "${CIRCLE_USERNAME}" | tr '[:upper:]' '[:lower:]')
      - aws-code-deploy/deploy-bundle:
          application-name: "my-app-$stage-application"
          deployment-group: "my-app-$stage-deployment-group"
          bundle-bucket: "my-app-$stage-bucket"
          bundle-key: "appspec"
          bundle-type: "yaml"
          deployment-config: "CodeDeployDefault.ECSAllAtOnce"

But i am running into the following error :-

An error occurred (ApplicationDoesNotExistException) when calling the CreateDeployment operation: No application found for name: my-app- -application.

So clearly in my-app- -application the variables is not being set. any ideas on how to resolve it? Thank you.


Solution

  • The way you're currently setting your stage variable is scoped to the "Set stage name" step only.

    Try the following instead:

          - run :
              name: "Set stage name"
              command: |
                echo "export stage=$(echo "${CIRCLE_USERNAME}"| tr '[:upper:]' '[:lower:]')" >> "$BASH_ENV"
    

    Related documentation: