0.1.2 • Published 5 years ago

cdflow v0.1.2

Weekly downloads
9
License
-
Repository
-
Last release
5 years ago

CDFlow

Create all you need in GCloud with only a JSON file.

Project setup

  1. First of all you need to have a billing account in GCloud (in future i will implement AWS/ Azure and others).
  2. After that, Creates a new project, then a service account with owner privileges, and download a JSON key file for authentication.
  3. Enable the Cloud Resource Manager API, then run the npm install command.
npm install cdflow --save

You can deactivate the API's after cdflow create the project definitions, when cdflow run again they will be reactivate (in future, i will deactivate after run the creation)

JSON Build File

The JSON build file indicate all the options that you could be create in cdflow

{
	"keyFilename": "example.json",                  // This is the key-file location
	"serviceAccount": {                             // In future wil be used to manipulate as a temporary service key
		"name": "name"
	},
	"repositorie": {
		"name": "repositorie"                       // The name of code repositorie
	},
	"triggers": [{                                  // The triggers tha will be setted in GCloud Build
		"description": "description",
		"filename": "cloudbuild.yaml",
		"generateFile": "JSON | YAML",
		"substituitions": [{
			"_NODE_ENV": "dev"
		}, {
			"_PORT_BINDING": "29000:8090"
		}],
		"branchName": "master | /regex/"            // Name of branch in git, could be a string or a regex
	}],
	"kms": {                                        // The definiton of encryptation methods that will be used in continuos integration
		"keyRing": "novo-keyring",
		"cryptoKey": "nova-chave",
		"location": "southamerica-east1",
		"purpose": "ENCRYPT_DECRYPT"
	},
	"vm": {                                         // The machine definition
		"name": "docker-01",
		"zone": "southamerica-east1-b",
		"os": "container-vm",
		"http": true,
		"https": true,
		"machineType": "f1-micro",]

		// This two options defines if cdflow has to create static ip's in network, but still not working
		"internalIp": {
			"name": "internal-ip"
		},
		"externalIp": {
			"name": "external-ip"
		}
	}
}

Running

cdflow [-a] apiKey [-b] builFile

The -a, --api-key option indicates the .json file generated by Google Cloud to authentication, this could be setted in build file. The -b, --build-file option indicate the location of build .json definition, if not indicates the wiil be search for build.json in actual directory.

Needed GCloud API's

  • IAM API - iam.googleapis.com
  • Source API - sourcerepo.googleapis.com
  • Cloud Build API - cloudbuild.googleapis.com
  • Cloud KMS API - cloudkms.googleapis.com
  • Compute Engine API - compute.googleapis.com

Author

Karl Alexander - GitHub Page.