CircleCI
Prodvana supports CircleCI directly via a dedicated Orb.
Getting Started
- 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
- 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]
-
Create a Prodvana API token and add it to CircleCI as an Environment Variable Secret named
PRODVANA_API_TOKEN
. -
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
Updated 9 months ago