CDFlow
Create all you need in GCloud with only a JSON file.
Project setup
- First of all you need to have a billing account in GCloud (in future i will implement AWS/ Azure and others).
- After that, Creates a new project, then a service account with owner privileges, and download a JSON key file for authentication.
- 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
- [x] IAM API - iam.googleapis.com
- [x] Source API - sourcerepo.googleapis.com
- [x] Cloud Build API - cloudbuild.googleapis.com
- [x] Cloud KMS API - cloudkms.googleapis.com
- [x] Compute Engine API - compute.googleapis.com
Author
Karl Alexander - GitHub Page.