Skip to content

Instantly share code, notes, and snippets.

@mweagle
mweagle / build.groovy
Created May 22, 2016 17:23
Jenkins 2.0 build
node {
def golangExists = fileExists '/home/ec2-user/go'
if (!golangExists) {
stage "Configure Go"
sh('curl -vs -L https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz -o /home/ec2-user/go.linux-amd64.tar.gz')
sh('tar -xzf /home/ec2-user/go.linux-amd64.tar.gz -C /home/ec2-user')
} else {
sh('echo Go installed')
}
@mweagle
mweagle / pipeline.yml
Created May 25, 2016 14:11
Concourse CI pipeline for http://gosparta.io application build
################################################################################
# REFERENCES
# ConcourseCI Docs: https://concourse.ci
# Concourse tutorial: https://github.com/starkandwayne/concourse-tutorial
#
# NOTES
# This file is a self-contained description of a Concourse CI pipeline
# to deploy a http://gosparta.io application. There's a couple of things to
# note:
# - The YAML uses node references so that scripts can be defined in the
@mweagle
mweagle / main.go
Last active August 26, 2016 05:06
Spartav0.8.0_newCommand
// Custom command to startup a simple HelloWorld HTTP server
sqsWorkerCommand := &cobra.Command{
Use: "sqsWorker",
Short: "Sample SQS Worker processor",
Long: fmt.Sprintf("Sample SQS listener"),
RunE: func(cmd *cobra.Command, args []string) error {
return sqsListener(sparta.OptionsGlobal.Logger)
},
}
sparta.CommandLineOptions.Root.AddCommand(sqsWorkerCommand)
@mweagle
mweagle / main.go
Created August 26, 2016 05:07
Spartav0.8.0_sshKeyName
// And add the SSHKeyName option to the provision step
sparta.CommandLineOptions.Provision.Flags().StringVarP(&SSHKeyName,
"key",
"k",
"",
"SSH Key Name to use for EC2 instances")
@mweagle
mweagle / main.go
Created August 26, 2016 05:11
Spartav0.8.0_buildDockerImage
// SpartaPostBuildDockerImageHook workflow hook to build the Docker image
func SpartaPostBuildDockerImageHook(context map[string]interface{},
serviceName string,
S3Bucket string,
buildID string,
awsSession *session.Session,
noop bool,
logger *logrus.Logger) error {
dockerServiceName := strings.ToLower(serviceName)
@mweagle
mweagle / main.go
Created August 26, 2016 05:27
Spartav0.8.0_newLambda
// Setup an IAM role that allows the lambda function to send a message
// to the queue.
iamPolicy := sparta.IAMRoleDefinition{
Privileges: []sparta.IAMRolePrivilege{
sparta.IAMRolePrivilege{
Actions: []string{
"sqs:SendMessage"},
Resource: gocf.GetAtt(sqsResourceName, "Arn").String(),
},
},
@mweagle
mweagle / main.go
Last active August 26, 2016 05:45
Spartav0.8.0_EC2Role
ec2IAMStatements = append(ec2IAMStatements, spartaIAM.PolicyStatement{
Action: []string{"sqs:ChangeMessageVisibility",
"sqs:DeleteMessage",
"sqs:GetQueueAttributes",
"sqs:ReceiveMessage"},
Effect: "Allow",
Resource: gocf.GetAtt(sqsResourceName, "Arn").String(),
@mweagle
mweagle / main.go
Last active August 26, 2016 05:47
Spartav0.8.0_envVars
Environment: &gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironmentList{
gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironment{
Name: gocf.String("AWS_REGION"),
Value: gocf.Ref("AWS::Region").String(),
},
gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironment{
Name: gocf.String(sqsQueueURLEnvVar),
Value: gocf.Ref(sqsResourceName).String(),
},
gocf.EC2ContainerServiceTaskDefinitionContainerDefinitionsEnvironment{
lambdaFn.Decorator = func(serviceName string,
lambdaResourceName string,
lambdaResource gocf.LambdaFunction,
resourceMetadata map[string]interface{},
S3Bucket string,
S3Key string,
buildID string,
template *gocf.Template,
context map[string]interface{},
logger *logrus.Logger) error {
// Go get the outputs of the GrafanaStack
awsSession := session.New()
cloudFormationSvc := cloudformation.New(awsSession)
params := &cloudformation.DescribeStacksInput{
StackName: aws.String(GrafanaStackName),
}
outputResults, outputResultsErr := cloudFormationSvc.DescribeStacks(params)