@bonniernews/gcpohoy
v1.1.1
Published
Node helper for a standardized shell execution of terraform and gcloud commands
Downloads
1,489
Maintainers
Readme
gcpohoy
A node-module that helps you deploy, monitor and rollback your (mainly GCP) services managed with Terraform.
Requirements
To run this package successfully you need GCloud CLI and Terraform:
- Install GCloud CLI: https://cloud.google.com/sdk/docs/install
- Install Terraform:
brew install terraform
- Or download from https://developer.hashicorp.com/terraform/downloads
Install
Install this script in the project(s) you want it or globally. Note that conflicts with node version might occur when installing globally
npm i @bonniernews/gcpohoy
npm i @bonniernews/gcpohoy -g
Usage
In a project running Terraform and GCloud with Expressen's standard setup you can run for example:
gcpohoy help
gcpohoy login
gcpohoy deploy <environment>
gcpohoy rollback <environment> -r <revision>
gcpohoy forward-db <environment> -p <port> -s <secret_pw_name>
You can run --help for any given command to see all available arguments/options:
gcpohoy deploy <environment> --help
Multi Cloud Run projects
This package handles multi-cloudrun projects (Note: Uses the same docker image with different args)
gcpohoy deploy <environment>
- Default: Deploys all cloud runs it can find in Terraform.
To manage your services use --serviceName (-s)
gcpohoy <deploy|changes|status> <environment> -s <service-name>
gcpohoy status <environment> -s <service-name>
Note: gcpohoy apply
doesn't support --serviceName
flag, it runs everything.
Rollback works the same:
gcpohoy rollback <environment> -s <service-name> -r <revision>
CI/CD (Github Actions)
Detailed instructions found here examples/workflow-example.md
gcpohoy can easily be used in CI/CD with the benefit of working mostly the same as locally.
- gcpohoy needs to be installed in the project and not globally for it to work in CI/CD.
- Since gcpohoy don't have access to terraform in the cloud you need to point out
serviceName
andprojectId
- View caveats in examples/workflow-example.md
A final deploy step using gcpohoy can look something like:
- name: "Deploy"
run: npm run deploy ${{inputs.environment}} -- --serviceName=layout-service-${{inputs.environment}} --projectId=${{secrets.gcp-project-id}}