parent
f07c64f7b8
commit
3a71dc47f8
@ -122,21 +122,23 @@ checkout as-is. Recipe commit hashes are also supported as values for
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isChaosCommit, err = app.Recipe.EnsureVersion(toDeployVersion)
|
if !internal.Chaos {
|
||||||
if err != nil {
|
isChaosCommit, err = app.Recipe.EnsureVersion(toDeployVersion)
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if isChaosCommit {
|
|
||||||
log.Debugf("assuming chaos commit: %s", toDeployVersion)
|
|
||||||
|
|
||||||
internal.Chaos = true
|
|
||||||
toDeployChaosVersion = toDeployVersion
|
|
||||||
|
|
||||||
toDeployVersion, err = app.Recipe.GetVersionLabelLocal()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if isChaosCommit {
|
||||||
|
log.Debugf("assuming chaos commit: %s", toDeployVersion)
|
||||||
|
|
||||||
|
internal.Chaos = true
|
||||||
|
toDeployChaosVersion = toDeployVersion
|
||||||
|
|
||||||
|
toDeployVersion, err = app.Recipe.GetVersionLabelLocal()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := validateSecrets(cl, app); err != nil {
|
if err := validateSecrets(cl, app); err != nil {
|
||||||
@ -171,7 +173,7 @@ checkout as-is. Recipe commit hashes are also supported as values for
|
|||||||
|
|
||||||
toDeployChaosVersionLabel := toDeployChaosVersion
|
toDeployChaosVersionLabel := toDeployChaosVersion
|
||||||
if app.Recipe.Dirty {
|
if app.Recipe.Dirty {
|
||||||
toDeployChaosVersionLabel = fmt.Sprintf("%s%s", toDeployChaosVersion, config.DIRTY_DEFAULT)
|
toDeployChaosVersionLabel = formatter.AddDirtyMarker(toDeployChaosVersionLabel)
|
||||||
}
|
}
|
||||||
|
|
||||||
appPkg.ExposeAllEnv(stackName, compose, app.Env)
|
appPkg.ExposeAllEnv(stackName, compose, app.Env)
|
||||||
|
@ -7,7 +7,6 @@ import (
|
|||||||
"coopcloud.tech/abra/cli/internal"
|
"coopcloud.tech/abra/cli/internal"
|
||||||
"coopcloud.tech/abra/pkg/autocomplete"
|
"coopcloud.tech/abra/pkg/autocomplete"
|
||||||
"coopcloud.tech/abra/pkg/formatter"
|
"coopcloud.tech/abra/pkg/formatter"
|
||||||
"coopcloud.tech/abra/pkg/log"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,10 +25,6 @@ var AppEnvCommand = &cobra.Command{
|
|||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
app := internal.ValidateApp(args)
|
app := internal.ValidateApp(args)
|
||||||
|
|
||||||
if err := app.Recipe.Ensure(internal.GetEnsureContext()); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
var envKeys []string
|
var envKeys []string
|
||||||
for k := range app.Env {
|
for k := range app.Env {
|
||||||
envKeys = append(envKeys, k)
|
envKeys = append(envKeys, k)
|
||||||
|
@ -232,7 +232,7 @@ func chooseDowngrade(
|
|||||||
Options: internal.SortVersionsDesc(availableDowngrades),
|
Options: internal.SortVersionsDesc(availableDowngrades),
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := survey.AskOne(prompt, &chosenDowngrade); err != nil {
|
if err := survey.AskOne(prompt, chosenDowngrade); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,12 @@ Passing "--prune/-p" does not remove those volumes.`,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := app.WriteRecipeVersion(deployMeta.Version, false); err != nil {
|
toWriteVersion := deployMeta.Version
|
||||||
|
if deployMeta.IsChaos {
|
||||||
|
toWriteVersion = chaosVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := app.WriteRecipeVersion(toWriteVersion, false); err != nil {
|
||||||
log.Fatalf("writing recipe version failed: %s", err)
|
log.Fatalf("writing recipe version failed: %s", err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -274,7 +274,7 @@ func chooseUpgrade(
|
|||||||
Options: internal.SortVersionsDesc(availableUpgrades),
|
Options: internal.SortVersionsDesc(availableUpgrades),
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := survey.AskOne(prompt, &chosenUpgrade); err != nil {
|
if err := survey.AskOne(prompt, chosenUpgrade); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"coopcloud.tech/abra/pkg/config"
|
"coopcloud.tech/abra/pkg/config"
|
||||||
"coopcloud.tech/abra/pkg/formatter"
|
"coopcloud.tech/abra/pkg/formatter"
|
||||||
"coopcloud.tech/abra/pkg/log"
|
"coopcloud.tech/abra/pkg/log"
|
||||||
|
"coopcloud.tech/abra/pkg/recipe"
|
||||||
"coopcloud.tech/tagcmp"
|
"coopcloud.tech/tagcmp"
|
||||||
"github.com/AlecAivazis/survey/v2"
|
"github.com/AlecAivazis/survey/v2"
|
||||||
"github.com/charmbracelet/lipgloss"
|
"github.com/charmbracelet/lipgloss"
|
||||||
@ -70,15 +71,15 @@ func NewVersionOverview(
|
|||||||
{"CONFIG", deployConfig},
|
{"CONFIG", deployConfig},
|
||||||
|
|
||||||
{"CURRENT DEPLOYMENT", "---"},
|
{"CURRENT DEPLOYMENT", "---"},
|
||||||
{"VERSION", deployedVersion},
|
{"VERSION", formatter.BoldDirtyDefault(deployedVersion)},
|
||||||
{"CHAOS ", deployedChaosVersion},
|
{"CHAOS ", formatter.BoldDirtyDefault(deployedChaosVersion)},
|
||||||
|
|
||||||
{upperKind, "---"},
|
{upperKind, "---"},
|
||||||
{"VERSION", toDeployVersion},
|
{"VERSION", formatter.BoldDirtyDefault(toDeployVersion)},
|
||||||
|
|
||||||
{fmt.Sprintf("%s.ENV", strings.ToUpper(app.Domain)), "---"},
|
{fmt.Sprintf("%s.ENV", strings.ToUpper(app.Domain)), "---"},
|
||||||
{"CURRENT VERSION", app.Recipe.EnvVersion},
|
{"CURRENT VERSION", formatter.BoldDirtyDefault(app.Recipe.EnvVersion)},
|
||||||
{"NEW VERSION", toDeployVersion},
|
{"NEW VERSION", formatter.BoldDirtyDefault(toDeployVersion)},
|
||||||
}
|
}
|
||||||
|
|
||||||
overview := formatter.CreateOverview(
|
overview := formatter.CreateOverview(
|
||||||
@ -143,10 +144,23 @@ func DeployOverview(
|
|||||||
domain = config.NO_DOMAIN_DEFAULT
|
domain = config.NO_DOMAIN_DEFAULT
|
||||||
}
|
}
|
||||||
|
|
||||||
deployedChaosVersion = formatter.BoldDirtyDefault(deployedChaosVersion)
|
|
||||||
|
|
||||||
if app.Recipe.Dirty {
|
if app.Recipe.Dirty {
|
||||||
toDeployChaosVersion = formatter.BoldDirtyDefault(toDeployChaosVersion)
|
toWriteVersion = formatter.AddDirtyMarker(toWriteVersion)
|
||||||
|
toDeployChaosVersion = formatter.AddDirtyMarker(toDeployChaosVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
recipeName, exists := app.Env["RECIPE"]
|
||||||
|
if !exists {
|
||||||
|
recipeName = app.Env["TYPE"]
|
||||||
|
}
|
||||||
|
|
||||||
|
envVersion, err := recipe.GetEnvVersionRaw(recipeName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if envVersion == "" {
|
||||||
|
envVersion = config.NO_VERSION_DEFAULT
|
||||||
}
|
}
|
||||||
|
|
||||||
rows := [][]string{
|
rows := [][]string{
|
||||||
@ -156,16 +170,16 @@ func DeployOverview(
|
|||||||
{"CONFIG", deployConfig},
|
{"CONFIG", deployConfig},
|
||||||
|
|
||||||
{"CURRENT DEPLOYMENT", "---"},
|
{"CURRENT DEPLOYMENT", "---"},
|
||||||
{"VERSION", deployedVersion},
|
{"VERSION", formatter.BoldDirtyDefault(deployedVersion)},
|
||||||
{"CHAOS", deployedChaosVersion},
|
{"CHAOS", formatter.BoldDirtyDefault(deployedChaosVersion)},
|
||||||
|
|
||||||
{"NEW DEPLOYMENT", "---"},
|
{"NEW DEPLOYMENT", "---"},
|
||||||
{"VERSION", toDeployVersion},
|
{"VERSION", formatter.BoldDirtyDefault(toDeployVersion)},
|
||||||
{"CHAOS", toDeployChaosVersion},
|
{"CHAOS", formatter.BoldDirtyDefault(toDeployChaosVersion)},
|
||||||
|
|
||||||
{fmt.Sprintf("%s.ENV", strings.ToUpper(app.Name)), "---"},
|
{fmt.Sprintf("%s.ENV", strings.ToUpper(app.Name)), "---"},
|
||||||
{"CURRENT VERSION", app.Recipe.EnvVersion},
|
{"CURRENT VERSION", formatter.BoldDirtyDefault(envVersion)},
|
||||||
{"NEW VERSION", toWriteVersion},
|
{"NEW VERSION", formatter.BoldDirtyDefault(toWriteVersion)},
|
||||||
}
|
}
|
||||||
|
|
||||||
overview := formatter.CreateOverview("DEPLOY OVERVIEW", rows)
|
overview := formatter.CreateOverview("DEPLOY OVERVIEW", rows)
|
||||||
@ -213,10 +227,6 @@ func UndeployOverview(
|
|||||||
domain = config.NO_DOMAIN_DEFAULT
|
domain = config.NO_DOMAIN_DEFAULT
|
||||||
}
|
}
|
||||||
|
|
||||||
if app.Recipe.Dirty {
|
|
||||||
chaosVersion = formatter.BoldDirtyDefault(chaosVersion)
|
|
||||||
}
|
|
||||||
|
|
||||||
rows := [][]string{
|
rows := [][]string{
|
||||||
{"APP", domain},
|
{"APP", domain},
|
||||||
{"RECIPE", app.Recipe.Name},
|
{"RECIPE", app.Recipe.Name},
|
||||||
@ -224,12 +234,12 @@ func UndeployOverview(
|
|||||||
{"CONFIG", deployConfig},
|
{"CONFIG", deployConfig},
|
||||||
|
|
||||||
{"CURRENT DEPLOYMENT", "---"},
|
{"CURRENT DEPLOYMENT", "---"},
|
||||||
{"DEPLOYED", version},
|
{"VERSION", formatter.BoldDirtyDefault(version)},
|
||||||
{"CHAOS", chaosVersion},
|
{"CHAOS", formatter.BoldDirtyDefault(chaosVersion)},
|
||||||
|
|
||||||
{fmt.Sprintf("%s.ENV", strings.ToUpper(app.Name)), "---"},
|
{fmt.Sprintf("%s.ENV", strings.ToUpper(app.Name)), "---"},
|
||||||
{"CURRENT VERSION", app.Recipe.EnvVersion},
|
{"CURRENT VERSION", formatter.BoldDirtyDefault(app.Recipe.EnvVersion)},
|
||||||
{"NEW VERSION", version},
|
{"NEW VERSION", formatter.BoldDirtyDefault(version)},
|
||||||
}
|
}
|
||||||
|
|
||||||
overview := formatter.CreateOverview("UNDEPLOY OVERVIEW", rows)
|
overview := formatter.CreateOverview("UNDEPLOY OVERVIEW", rows)
|
||||||
|
@ -268,3 +268,8 @@ func BoldDirtyDefault(v string) string {
|
|||||||
|
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddDirtyMarker adds the dirty marker to a version string.
|
||||||
|
func AddDirtyMarker(v string) string {
|
||||||
|
return fmt.Sprintf("%s%s", v, config.DIRTY_DEFAULT)
|
||||||
|
}
|
||||||
|
@ -105,7 +105,7 @@ func (r Recipe) IsChaosCommit(version string) (bool, error) {
|
|||||||
isChaosCommit = true
|
isChaosCommit = true
|
||||||
}
|
}
|
||||||
|
|
||||||
return true, nil
|
return isChaosCommit, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// EnsureVersion checks whether a specific version exists for a recipe.
|
// EnsureVersion checks whether a specific version exists for a recipe.
|
||||||
|
@ -125,6 +125,20 @@ type Features struct {
|
|||||||
SSO string `json:"sso"`
|
SSO string `json:"sso"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetEnvVersionRaw(name string) (string, error) {
|
||||||
|
var version string
|
||||||
|
|
||||||
|
if strings.Contains(name, ":") {
|
||||||
|
split := strings.Split(name, ":")
|
||||||
|
if len(split) > 2 {
|
||||||
|
return version, fmt.Errorf("version seems invalid: %s", name)
|
||||||
|
}
|
||||||
|
version = split[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
func Get(name string) Recipe {
|
func Get(name string) Recipe {
|
||||||
version := ""
|
version := ""
|
||||||
if strings.Contains(name, ":") {
|
if strings.Contains(name, ":") {
|
||||||
|
@ -110,3 +110,11 @@ func TestDirtyMarkerRemoved(t *testing.T) {
|
|||||||
r := Get("abra-test-recipe:1e83340e+U")
|
r := Get("abra-test-recipe:1e83340e+U")
|
||||||
assert.Equal(t, "1e83340e", r.EnvVersion)
|
assert.Equal(t, "1e83340e", r.EnvVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetEnvVersionRaw(t *testing.T) {
|
||||||
|
v, err := GetEnvVersionRaw("abra-test-recipe:1e83340e+U")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
assert.Equal(t, "1e83340e+U", v)
|
||||||
|
}
|
||||||
|
320
tests/integration/app_deploy_overview.bats
Normal file
320
tests/integration/app_deploy_overview.bats
Normal file
@ -0,0 +1,320 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
setup_file(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
_add_server
|
||||||
|
_new_app
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown_file(){
|
||||||
|
_rm_app
|
||||||
|
_rm_server
|
||||||
|
_reset_recipe
|
||||||
|
}
|
||||||
|
|
||||||
|
setup(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown(){
|
||||||
|
_reset_recipe
|
||||||
|
_reset_app
|
||||||
|
_undeploy_app
|
||||||
|
_reset_tags
|
||||||
|
|
||||||
|
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "first deploy with empty env version" {
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
_wipe_env_version
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*N/A'
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.* ' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*N/A'
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${latestRelease}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${latestRelease}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "first deploy to latest version" {
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*N/A'
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.* ' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${latestRelease}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${latestRelease}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
# bats test_tags=slow
|
||||||
|
@test "deploy, re-deploy, choose env version" {
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.1+1.20.2" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
_undeploy_app
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*N/A'
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.1.1+1.20.2"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.1.1+1.20.2"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "0.1.1+1.20.2"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:0.1.1+1.20.2" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "deploy, re-deploy, ignore env version" {
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.1+1.20.2" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
_undeploy_app
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --ignore-env-version
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*N/A'
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.1.1+1.20.2"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${latestRelease}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${latestRelease}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "deploy then chaos deploy" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run bash -c 'echo "unstaged changes" >> "$ABRA_DIR/recipes/$TEST_RECIPE/foo"'
|
||||||
|
assert_success
|
||||||
|
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --chaos
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${headHash:0:8}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "chaos deploy then force deploy" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run bash -c 'echo "unstaged changes" >> "$ABRA_DIR/recipes/$TEST_RECIPE/foo"'
|
||||||
|
assert_success
|
||||||
|
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --chaos
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --force
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${headHash:0:8}+U"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${latestRelease}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${latestRelease}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "deploy then force chaos commit deploy" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${latestRelease}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "${headHash:0:8}" \
|
||||||
|
--no-input --no-converge-checks --force
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${headHash:0:8}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "chaos deploy then chaos deploy with unstaged" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --chaos
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*N/A'
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
run bash -c 'echo "unstaged changes" >> "$ABRA_DIR/recipes/$TEST_RECIPE/foo"'
|
||||||
|
assert_success
|
||||||
|
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --chaos
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${headHash:0:8}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "hash deploy then force deploy" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "${headHash:0:8}" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --force
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${headHash:0:8}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${latestRelease}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${latestRelease}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
@ -32,7 +32,6 @@ teardown(){
|
|||||||
assert_failure
|
assert_failure
|
||||||
}
|
}
|
||||||
|
|
||||||
# bats test_tags=slow
|
|
||||||
@test "show env version" {
|
@test "show env version" {
|
||||||
latestRelease=$(_latest_release)
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
@ -40,3 +39,8 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
assert_output --partial "$latestRelease"
|
assert_output --partial "$latestRelease"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "show env version despite --chaos" {
|
||||||
|
run $ABRA app env "$TEST_APP_DOMAIN"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
76
tests/integration/app_rollback_overview.bats
Normal file
76
tests/integration/app_rollback_overview.bats
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
setup_file(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
_add_server
|
||||||
|
_new_app
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown_file(){
|
||||||
|
_rm_app
|
||||||
|
_rm_server
|
||||||
|
_reset_recipe
|
||||||
|
}
|
||||||
|
|
||||||
|
setup(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown(){
|
||||||
|
_undeploy_app
|
||||||
|
_reset_recipe
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "deploy then rollback" {
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.2.0+1.21.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app rollback "$TEST_APP_DOMAIN" "0.1.0+1.20.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:0.1.0+1.20.0" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "force rollback" {
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.2.0+1.21.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app rollback "$TEST_APP_DOMAIN" "0.2.0+1.21.0" \
|
||||||
|
--no-input --no-converge-checks --force
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:0.2.0+1.21.0" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
102
tests/integration/app_undeploy_overview.bats
Normal file
102
tests/integration/app_undeploy_overview.bats
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
setup_file(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
_add_server
|
||||||
|
_new_app
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown_file(){
|
||||||
|
_rm_app
|
||||||
|
_rm_server
|
||||||
|
_reset_recipe
|
||||||
|
}
|
||||||
|
|
||||||
|
setup(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
_ensure_catalogue
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown(){
|
||||||
|
_reset_recipe
|
||||||
|
_undeploy_app
|
||||||
|
_reset_app
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "deploy and undeploy" {
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.0+1.20.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app undeploy "$TEST_APP_DOMAIN" --no-input
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:0.1.0+1.20.0" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "chaos deploy and undeploy" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --chaos
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app undeploy "$TEST_APP_DOMAIN" --no-input
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${headHash:0:8}"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${headHash:0:8}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "chaos deploy with unstaged commits and undeploy" {
|
||||||
|
headHash=$(_get_head_hash)
|
||||||
|
latestRelease=$(_latest_release)
|
||||||
|
|
||||||
|
run bash -c 'echo "unstaged changes" >> "$ABRA_DIR/recipes/$TEST_RECIPE/foo"'
|
||||||
|
assert_success
|
||||||
|
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
|
--no-input --no-converge-checks --chaos
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app undeploy "$TEST_APP_DOMAIN" --no-input
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'CHAOS.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "${latestRelease}"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "${headHash:0:8}+U"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:${headHash:0:8}" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
}
|
75
tests/integration/app_upgrade_overview.bats
Normal file
75
tests/integration/app_upgrade_overview.bats
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
setup_file(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
_add_server
|
||||||
|
_new_app
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown_file(){
|
||||||
|
_rm_app
|
||||||
|
_rm_server
|
||||||
|
}
|
||||||
|
|
||||||
|
setup(){
|
||||||
|
load "$PWD/tests/integration/helpers/common"
|
||||||
|
_common_setup
|
||||||
|
}
|
||||||
|
|
||||||
|
teardown(){
|
||||||
|
_undeploy_app
|
||||||
|
_reset_recipe
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "deploy then upgrade" {
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.1.0+1.20.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app upgrade "$TEST_APP_DOMAIN" "0.2.0+1.21.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.1.0+1.20.0"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:0.2.0+1.21.0" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
||||||
|
|
||||||
|
@test "force upgrade" {
|
||||||
|
run $ABRA app deploy "$TEST_APP_DOMAIN" "0.2.0+1.21.0" \
|
||||||
|
--no-input --no-converge-checks
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
run $ABRA app upgrade "$TEST_APP_DOMAIN" "0.2.0+1.21.0" \
|
||||||
|
--no-input --no-converge-checks --force
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
# current deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# new deployment
|
||||||
|
assert_output --regexp 'VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'CHAOS.*false'
|
||||||
|
|
||||||
|
# env version
|
||||||
|
assert_output --regexp 'CURRENT VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
assert_output --regexp 'NEW VERSION.*' + "0.2.0+1.21.0"
|
||||||
|
|
||||||
|
run grep -q "TYPE=$TEST_RECIPE:0.2.0+1.21.0" \
|
||||||
|
"$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
assert_success
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user