├── .gitignore ├── Dockerfile ├── README.md ├── action.yaml └── entrypoint.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM armory/armory-cli:latest 2 | 3 | COPY ./entrypoint.sh /entrypoint.sh 4 | 5 | ENTRYPOINT ["/entrypoint.sh"] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # About Armory Continuous Deployment-as-a-Service 2 | Focus on writing code, not deploying it. Don’t stress about the journey, just enjoy the destination. Armory Continuous Deployment-as-a-Service will take care of the rest with declarative deployments to Kubernetes using the GitOps experience you love. Write your code, package your artifacts, declare your application targets, and commit with confidence. 3 | 4 | # Top 3 Selling Points 5 | 6 | * *Multi-Environment Deployments:* Deploy your code to multiple environments with ease, track where your code has reached and what needs to happen; only deploy to production if pre-production security scanners and automated tests complete successfully, and leverage your existing test suites during a deployment to verify application health. 7 | * *Start Deploying In Under 10 Minutes:* Connect your Kubernetes cluster and deploy our sample application to it using a canary strategy in under 10 minutes. Deploy your own custom application in under an hour. 8 | * *Multiple Cloud Providers:* Whether you’re running in AWS, Azure, building software in Google, or use a multi-target approach with all three, Armory has you covered. Deploy the code you are building to any cluster, namespace; any or all k8s environments, at any scale, in a public cloud or your on premise data center. 9 | 10 | 11 | 12 | 13 | # Pricing and Setup 14 | [Sign up for free](https://www.armory.io/products/continuous-deployment-as-a-service/?utm_medium=marketplace&utm_source=github_marketplace) 15 | 16 | [Pricing](https://www.armory.io/pricing/?utm_medium=marketplace&utm_source=github_marketplace) 17 | * Experience hassle-free Continuous Deployment at no cost 18 | * Our free pricing option includes: 19 | * Up to 25 Application Targets per Month (each copy of an app deployed to a namespace) 20 | * Up to 1000 Deployments per Month 21 | * Blue/Green and Canary Deployments 22 | * Automated Impact Analysis 23 | * Automated Rollbacks 24 | * Unlimited Users and Services (Applications) 25 | -------------------------------------------------------------------------------- /action.yaml: -------------------------------------------------------------------------------- 1 | name: 'Armory Continuous Deployment-as-a-Service' 2 | description: 'CD-as-a-Service enables declarative continuous deployment, with a GitOps experience and advanced deployment strategies. ' 3 | 4 | inputs: 5 | path-to-file: 6 | description: 'Path to the configuration YAML file used to configure your deployment' 7 | required: true 8 | applicationName: 9 | description: 'extra args to the deployment start command' 10 | required: false 11 | addContext: 12 | description: 'extra context params to the deployment start command' 13 | required: false 14 | withScmFile: 15 | description: 'Path to the YAML file containing the SCM values associated with the deployment' 16 | required: false 17 | clientId: 18 | description: 'ClientId for Armory Cloud' 19 | required: true 20 | clientSecret: 21 | description: 'ClientSecret for Armory Cloud' 22 | required: true 23 | audience: 24 | description: 'Intended audience of requests that will use your Armory Cloud authentication token. Is deployHostUrl by default' 25 | default: 'https://api.cloud.armory.io' 26 | required: false 27 | tokenIssuerUrl: 28 | description: 'Armory Cloud authentication provider url' 29 | default: 'https://auth.cloud.armory.io/oauth' 30 | required: false 31 | deployHostUrl: 32 | description: 'Location of the Armory Cloud API which will handle your deployment' 33 | default: 'api.cloud.armory.io' 34 | required: false 35 | waitForDeployment: 36 | description: 'Boolean flag (true|false) determining if the action should wait for the deployment to complete. "false" by default.' 37 | default: 'false' 38 | required: false 39 | 40 | outputs: 41 | DEPLOYMENT_ID: 42 | description: 'Unique deployment identifier - can be used to query the status of the deployment in cloud-console' 43 | LINK: 44 | description: 'Link to the cloud-console, where you can check the state of the workflow and advance it to the next stages' 45 | RUN_RESULT: 46 | description: "If deployment was triggered with 'waitForDeployment=true' flag, this variable will contain final status of the deployment - one of [SUCCEEDED, CANCELLED, FAILED, UNKNOWN (error)]" 47 | 48 | runs: 49 | using: 'docker' 50 | image: 'Dockerfile' 51 | env: 52 | ARMORY_CLIENTID: ${{ inputs.clientId }} 53 | ARMORY_CLIENTSECRET: ${{ inputs.clientSecret }} 54 | ARMORY_AUDIENCE: ${{ inputs.audience }} 55 | ARMORY_TOKENISSUERURL: ${{ inputs.tokenIssuerUrl }} 56 | ARMORY_DEPLOYHOSTURL: ${{ inputs.deployHostUrl }} 57 | ARMORY_DEPLOYORIGIN: 'github' 58 | args: 59 | - ${{ inputs.path-to-file }} 60 | - ${{ inputs.applicationName }} 61 | - ${{ inputs.addContext }} 62 | - ${{ inputs.withScmFile }} 63 | - ${{ inputs.waitForDeployment }} 64 | -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | EXTRA_ARGS="" 6 | if [ -n "${2}" ]; then 7 | EXTRA_ARGS=" --application=${2}" 8 | fi 9 | 10 | if [ -n "${3}" ]; then 11 | EXTRA_ARGS="${EXTRA_ARGS} --add-context=${3}" 12 | fi 13 | 14 | if [ -n "${4}" ] 15 | then 16 | EXTRA_ARGS="${EXTRA_ARGS} --with-scm-file=${4}" 17 | else 18 | EXTRA_ARGS="${EXTRA_ARGS} --with-scm" 19 | fi 20 | 21 | if [ "${5,,}" = "true" ]; then 22 | EXTRA_ARGS="${EXTRA_ARGS} --watch" 23 | fi 24 | 25 | armory version 26 | armory deploy start ${EXTRA_ARGS} --file "${1}" 27 | 28 | --------------------------------------------------------------------------------