GuidesAPI Reference
Log In
Guides

Prodvana supports CircleCI directly via a dedicated Orb.

Getting Started

  1. Enable "Uncertified Orbs" for your CircleCI Project.

📘

Uncertified?!

Enabling uncertified orbs sounds scary, but don't worry! It just means our orb was not written by CircleCI.

According to CircleCI: "Currently, only orbs created by CircleCI are considered certified. Any other orbs, including partner orbs, and not certified."

This Orb was created by Prodvana; you can find the code here: https://github.com/prodvana/prodvana-orb

  1. Find or add the orbs key to your .circleci/confg.yml file and add the prodvana orb:
version: 2.1

orbs:
  prodvana: prodvana/[email protected]
  1. Create a Prodvana API token and add it to CircleCI as an Environment Variable Secret named PRODVANA_API_TOKEN.

  2. You're now ready to use the Prodvana orb! See Examples below or the orb documentation for usage examples.

Examples

Push Service with One Image

version: 2.1

orbs:
  prodvana: prodvana/[email protected]
  aws-ecr: circleci/[email protected]
  
jobs:
  deploy:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - aws-ecr/build-and-push-image:
          create-repo: true
          path: api
          tag: "${CIRCLE_SHA1},latest"
          repo: demo_api
      - prodvana/push:
          org: my-org
          app: my-app  # pass 'default' here if you never created an app, but instead configured your release channels using `pvnctl release-channels configure ...`
          service: my-service
          params: serviceImage=${AWS_ECR_REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/demo_api:${CIRCLE_SHA1}
          # optional list of Release Channels that this deploy
          # must succeed in before proceeding
          wait-channels: dogfood,staging

Push Service with Multiple Parameters

If you have a Service with multiple params, you can pass params a comma separated list of param_name=param_value; e.g, <param_name1>=<value1>,<param_name2>=<value2>,....

version: 2.1

orbs:
  prodvana: prodvana/[email protected]
  aws-ecr: circleci/[email protected]
  
jobs:
  deploy:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - aws-ecr/build-and-push-image:
          create-repo: true
          path: api
          tag: "${CIRCLE_SHA1},latest"
          repo: demo_api
      - aws-ecr/build-and-push-image:
          create-repo: true
          path: api_sidecar
          tag: "${CIRCLE_SHA1},latest"
          repo: demo_api_sidecar
      - prodvana/push:
          org: my-org
          app: my-app  # pass 'default' here if you never created an app, but instead configured your release channels using `pvnctl release-channels configure ...`
          service: my-service
          # when passing multiple parameters, use comma-separated pairs of name=value, e.g.
          # <program_name_1>Image=<image_url_1>,<program_name_2>Image=<image_url_2>,...
          params: apiImage=${AWS_ECR_REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/demo_api:${CIRCLE_SHA1},apiSidecarImage=${AWS_ECR_REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/demo_api_sidecar:${CIRCLE_SHA1}
          # optional list of Release Channels that this deploy
          # must succeed in before proceeding
          wait-channels: dogfood,staging

Push Service with Different Parameters By Release Channel

If you have a Service that needs different parameters in each Release Channel, you can pass params-by-release-channel a comma separated list of release_channel=param_name=value; e.g, rc1=param=value1,rc2=param=value2.

version: 2.1

orbs:
  prodvana: prodvana/[email protected]
  aws-ecr: circleci/[email protected]
  
jobs:
  deploy:
    docker:
      - image: cimg/base:stable
    steps:
      - checkout
      - aws-ecr/build-and-push-image:
          create-repo: true
          path: api
          tag: "${CIRCLE_SHA1},latest"
          repo: demo_api_staging
      - aws-ecr/build-and-push-image:
          create-repo: true
          path: api
          tag: "${CIRCLE_SHA1},latest"
          repo: demo_api_dogfood
      - prodvana/push:
          org: my-org
          app: my-app  # pass 'default' here if you never created an app, but instead configured your release channels using `pvnctl release-channels configure ...`
          service: my-service
          params-by-release-channel: dogfood=apiImage=${AWS_ECR_REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/demo_api_dogfood:${CIRCLE_SHA1},staging=apiImage=${AWS_ECR_REGISTRY_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/demo_api_staging:${CIRCLE_SHA1}
          # optional list of Release Channels that this deploy
          # must succeed in before proceeding
          wait-channels: dogfood,staging