Create and update command should use make file in photowall repo (#16)
* fixed build * create and update command uses make file in repo
This commit is contained in:
@@ -2,25 +2,7 @@ import { GluegunMenuToolbox } from '@lenne.tech/gluegun-menu'
|
||||
const chalk = require('chalk');
|
||||
const { AutoComplete, Input, Confirm } = require('enquirer');
|
||||
import { Octokit } from "@octokit/core";
|
||||
import { GluegunPrint } from 'gluegun';
|
||||
import { defaultMenuSettings, getCurrentBranch, getSettings } from '../../../../globals';
|
||||
const os = require("os");
|
||||
|
||||
const STACK_DEFAULTS = {
|
||||
STACK_ENVIRONMENT_NAME_TAG: 'test',
|
||||
CPU_SIZE: 512,
|
||||
MEMORY_SIZE: '1GB',
|
||||
HOSTED_ZONE_WITHOUT_TLD: 'photowall-test',
|
||||
PRIMARY_CERTIFICATE_ARN:
|
||||
'arn:aws:acm:eu-west-1:954747537408:certificate/12e33b74-da14-430d-a7ed-f62fa7113112',
|
||||
STATIC_CDN_CERTIFICATE_ARN:
|
||||
'arn:aws:acm:us-east-1:954747537408:certificate/223550cf-e404-4ff1-85bb-703b936c9347',
|
||||
DB_SECURITY_GROUP_ID: 'sg-001b3667edf19e1ce',
|
||||
STATIC_CDN_HOSTNAME: `''`,
|
||||
MAX_CONTAINERS: 1,
|
||||
MIN_CONTAINERS: 1,
|
||||
AWS_KEY_ENVIRONMENT: 'staging'
|
||||
}
|
||||
|
||||
type Stack = {
|
||||
name: string
|
||||
@@ -30,44 +12,6 @@ type Stack = {
|
||||
updated: string
|
||||
}
|
||||
|
||||
const getDownloadFileFromRepoCommand = (token: string, org: string, repo: string, path: string) => {
|
||||
const file = path.split('/').pop();
|
||||
return `curl -o /tmp/${file} -H 'Authorization: token ${token} ' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/${org}/${repo}/contents/${path}`;
|
||||
}
|
||||
|
||||
const getLifeCyclePolicyCommand = (stackName: string, policyFile: string) => {
|
||||
return `aws ecr put-lifecycle-policy --repository-name ${stackName} --lifecycle-policy-text "${policyFile}"`;
|
||||
}
|
||||
|
||||
const getUpdateStackCommand = (stackName: string, branch: string, templateFile: string) => {
|
||||
const cmd = [
|
||||
`aws cloudformation update-stack --stack-name ${stackName}`,
|
||||
`--template-body ${templateFile}`,
|
||||
`--capabilities CAPABILITY_NAMED_IAM`,
|
||||
`--tags Key=EnvironmentName,Value=test`,
|
||||
`--parameters`,
|
||||
`ParameterKey=EnvironmentName,UsePreviousValue=true`,
|
||||
`ParameterKey=Image,UsePreviousValue=true`,
|
||||
`ParameterKey=HostedZoneNameWithOutTLD,UsePreviousValue=true`,
|
||||
`ParameterKey=DomainNameWithoutTld,UsePreviousValue=true`,
|
||||
`ParameterKey=PrimaryCertificateArn,UsePreviousValue=true`,
|
||||
`ParameterKey=GitHubRepo,UsePreviousValue=true`,
|
||||
`ParameterKey=GitHubUser,UsePreviousValue=true`,
|
||||
`ParameterKey=GitHubBranch,ParameterValue=${branch}`,
|
||||
`ParameterKey=GitHubToken,UsePreviousValue=true`,
|
||||
`ParameterKey=ComposerAuth,UsePreviousValue=true`,
|
||||
`ParameterKey=CpuSize,ParameterValue=${STACK_DEFAULTS.CPU_SIZE}`,
|
||||
`ParameterKey=MemorySize,ParameterValue=${STACK_DEFAULTS.MEMORY_SIZE}`,
|
||||
`ParameterKey=MinContainers,ParameterValue=${STACK_DEFAULTS.MIN_CONTAINERS}`,
|
||||
`ParameterKey=MaxContainers,ParameterValue=${STACK_DEFAULTS.MAX_CONTAINERS}`,
|
||||
`ParameterKey=StaticCdnHostName,ParameterValue=${STACK_DEFAULTS.STATIC_CDN_HOSTNAME}`,
|
||||
`ParameterKey=StaticCdnCertificateArn,ParameterValue=${STACK_DEFAULTS.STATIC_CDN_CERTIFICATE_ARN}`,
|
||||
`ParameterKey=AwsAccessKeyParamNameEnvironment,ParameterValue=${STACK_DEFAULTS.AWS_KEY_ENVIRONMENT}`,
|
||||
`ParameterKey=DatabaseSecurityGroup,ParameterValue=${STACK_DEFAULTS.DB_SECURITY_GROUP_ID}`
|
||||
];
|
||||
return cmd.join(' ');
|
||||
}
|
||||
|
||||
const getBranchName = async (toolbox: GluegunMenuToolbox, token: string, repoPath: string) => {
|
||||
const {print} = toolbox;
|
||||
const currentBranch = await getCurrentBranch(repoPath, toolbox);
|
||||
@@ -121,7 +65,12 @@ module.exports = {
|
||||
|
||||
// Load settings
|
||||
const config = await getSettings(toolbox);
|
||||
if (!config) {
|
||||
if (!config || (!config.photowall_repo || config.photowall_repo === "")) {
|
||||
print.error(`
|
||||
|
||||
The create command requires that you set an absolute path to your local photowall repository.
|
||||
|
||||
`);
|
||||
await toolbox.menu.showMenu('setup', defaultMenuSettings);
|
||||
return;
|
||||
}
|
||||
@@ -184,22 +133,15 @@ module.exports = {
|
||||
});
|
||||
|
||||
try {
|
||||
|
||||
// Download files to /tmp
|
||||
await system.run(getDownloadFileFromRepoCommand(config.gh_token, 'Photowall', 'photowall', 'cloudformation/ecr-lifecycle-policy.json'));
|
||||
await system.run(getDownloadFileFromRepoCommand(config.gh_token, 'Photowall', 'photowall', 'cloudformation/ecs-service.yaml'));
|
||||
|
||||
const stackName = await prompt.run();
|
||||
|
||||
const lifeCycleCommand = getLifeCyclePolicyCommand(stackName, `file://ecr-lifecycle-policy.json`);
|
||||
const updateStackCommand = getUpdateStackCommand(stackName, branchName, `file://ecs-service.yaml`);
|
||||
const stacksuffix = stackName.replace('photowall-', '');
|
||||
|
||||
const shouldRun = await getConfirmation(branchName, stackName);
|
||||
|
||||
if (shouldRun) {
|
||||
let output = await system.run(lifeCycleCommand, {cwd: '/tmp/', trim: true});
|
||||
print.fancy(output);
|
||||
output = await system.run(updateStackCommand, {cwd: '/tmp/', trim: true});
|
||||
const cmd = `make update-stack STACK_ENVIRONMENT_NAME=${stacksuffix} GITHUB_BRANCH=${branchName}`;
|
||||
print.fancy(`Running [${chalk.yellow(cmd)}] in folder [${`${config.photowall_repo}/cloudformation/`}]`);
|
||||
const output = await system.run(cmd, {cwd: `${config.photowall_repo}/cloudformation/`, trim: true});
|
||||
print.fancy(output);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user