Skip to content

Commit

Permalink
Merge pull request #4 from fujiwara/no-publish
Browse files Browse the repository at this point in the history
add deploy option --publish and --alias
  • Loading branch information
fujiwara authored Nov 14, 2019
2 parents 4111110 + 218fc06 commit 8080503
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 8 deletions.
2 changes: 2 additions & 0 deletions cmd/lambroll/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ func _main() int {
SrcDir: deploy.Flag("src", "function zip archive src dir").Default(".").String(),
ExcludeFile: deploy.Flag("exclude-file", "exclude file").Default(lambroll.IgnoreFilename).String(),
DryRun: deploy.Flag("dry-run", "dry run").Bool(),
Publish: deploy.Flag("publish", "publish function").Default("true").Bool(),
AliasName: deploy.Flag("alias", "alias name for publish").Default(lambroll.CurrentAliasName).String(),
}

rollback := kingpin.Command("rollback", "rollback function")
Expand Down
17 changes: 12 additions & 5 deletions create.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,25 +62,32 @@ func (app *App) create(opt DeployOption, fn *Function) error {

version := "(created)"
if !*opt.DryRun {
fn.Publish = aws.Bool(true)
fn.Publish = opt.Publish
res, err := app.lambda.CreateFunction(fn)
if err != nil {
return errors.Wrap(err, "failed to create function")
}
version = *res.Version
log.Printf("[info] deployed function version %s", version)
if res.Version != nil {
log.Printf("[info] deployed function version %s", *res.Version)
} else {
log.Println("[info] deployed")
}
}

if err := app.updateTags(fn, opt); err != nil {
return err
}

log.Printf("[info] creating alias set %s to version %s %s", CurrentAliasName, version, opt.label())
if !*opt.Publish {
return nil
}

log.Printf("[info] creating alias set %s to version %s %s", *opt.AliasName, version, opt.label())
if !*opt.DryRun {
alias, err := app.lambda.CreateAlias(&lambda.CreateAliasInput{
FunctionName: fn.FunctionName,
FunctionVersion: aws.String(version),
Name: aws.String(CurrentAliasName),
Name: aws.String(*opt.AliasName),
})
if err != nil {
return errors.Wrap(err, "failed to create alias")
Expand Down
10 changes: 7 additions & 3 deletions deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ type DeployOption struct {
SrcDir *string
Excludes []string
ExcludeFile *string
Publish *bool
AliasName *string
DryRun *bool
}

Expand Down Expand Up @@ -133,7 +135,7 @@ func (app *App) Deploy(opt DeployOption) error {
if *opt.DryRun {
codeIn.DryRun = aws.Bool(true)
} else {
codeIn.Publish = aws.Bool(true)
codeIn.Publish = opt.Publish
}
log.Printf("[debug]\n%s", codeIn.String())

Expand All @@ -144,12 +146,14 @@ func (app *App) Deploy(opt DeployOption) error {
if res.Version != nil {
newerVersion = *res.Version
log.Printf("[info] deployed version %s %s", *res.Version, opt.label())
} else {
log.Println("[info] deployed")
}
if *opt.DryRun {
if *opt.DryRun || !*opt.Publish {
return nil
}

return app.updateAliases(*fn.FunctionName, versionAlias{newerVersion, CurrentAliasName})
return app.updateAliases(*fn.FunctionName, versionAlias{newerVersion, *opt.AliasName})
}

func (app *App) updateAliases(functionName string, vs ...versionAlias) error {
Expand Down

0 comments on commit 8080503

Please sign in to comment.