forked from toolshed/abra
Compare commits
2 Commits
recipe-ini
...
app-volume
Author | SHA1 | Date | |
---|---|---|---|
6f7ee1ee94 | |||
40c0fb4bac |
@ -5,7 +5,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
|
||||||
|
|
||||||
"coopcloud.tech/abra/cli/internal"
|
"coopcloud.tech/abra/cli/internal"
|
||||||
"coopcloud.tech/abra/pkg/autocomplete"
|
"coopcloud.tech/abra/pkg/autocomplete"
|
||||||
@ -13,7 +12,6 @@ import (
|
|||||||
stack "coopcloud.tech/abra/pkg/upstream/stack"
|
stack "coopcloud.tech/abra/pkg/upstream/stack"
|
||||||
"github.com/AlecAivazis/survey/v2"
|
"github.com/AlecAivazis/survey/v2"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/volume"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
)
|
)
|
||||||
@ -112,28 +110,19 @@ flag.
|
|||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
volumeListOptions := volume.ListOptions{fs}
|
volumeList, err := client.GetVolumes(cl, context.Background(), app.Server, fs)
|
||||||
volumeListOKBody, err := cl.VolumeList(context.Background(), volumeListOptions)
|
|
||||||
volumeList := volumeListOKBody.Volumes
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
volumeNames := client.GetVolumeNames(volumeList)
|
||||||
|
|
||||||
var vols []string
|
if len(volumeNames) > 0 {
|
||||||
for _, vol := range volumeList {
|
err := client.RemoveVolumes(cl, context.Background(), volumeNames, internal.Force, 5)
|
||||||
vols = append(vols, vol.Name)
|
if err != nil {
|
||||||
}
|
log.Fatalf("removing volumes failed: %s", err)
|
||||||
|
|
||||||
if len(vols) > 0 {
|
|
||||||
for _, vol := range vols {
|
|
||||||
err = retryFunc(5, func() error {
|
|
||||||
return cl.VolumeRemove(context.Background(), vol, internal.Force) // last argument is for force removing
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("removing volumes failed: %s", err)
|
|
||||||
}
|
|
||||||
logrus.Info(fmt.Sprintf("volume %s removed", vol))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logrus.Infof("%d volumes removed successfully", len(volumeNames))
|
||||||
} else {
|
} else {
|
||||||
logrus.Info("no volumes to remove")
|
logrus.Info("no volumes to remove")
|
||||||
}
|
}
|
||||||
@ -147,21 +136,3 @@ flag.
|
|||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// retryFunc retries the given function for the given retries. After the nth
|
|
||||||
// retry it waits (n + 1)^2 seconds before the next retry (starting with n=0).
|
|
||||||
// It returns an error if the function still failed after the last retry.
|
|
||||||
func retryFunc(retries int, fn func() error) error {
|
|
||||||
for i := 0; i < retries; i++ {
|
|
||||||
err := fn()
|
|
||||||
if err == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if i+1 < retries {
|
|
||||||
sleep := time.Duration(i+1) * time.Duration(i+1)
|
|
||||||
logrus.Infof("%s: waiting %d seconds before next retry", err, sleep)
|
|
||||||
time.Sleep(sleep * time.Second)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return fmt.Errorf("%d retries failed", retries)
|
|
||||||
}
|
|
||||||
|
@ -2,6 +2,7 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"log"
|
||||||
|
|
||||||
"coopcloud.tech/abra/cli/internal"
|
"coopcloud.tech/abra/cli/internal"
|
||||||
"coopcloud.tech/abra/pkg/autocomplete"
|
"coopcloud.tech/abra/pkg/autocomplete"
|
||||||
@ -131,12 +132,12 @@ Passing "--force/-f" will select all volumes for removal. Be careful.
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(volumesToRemove) > 0 {
|
if len(volumesToRemove) > 0 {
|
||||||
err = client.RemoveVolumes(cl, context.Background(), app.Server, volumesToRemove, internal.Force)
|
err := client.RemoveVolumes(cl, context.Background(), volumesToRemove, internal.Force, 5)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Fatal(err)
|
log.Fatalf("removing volumes failed: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Info("volumes removed successfully")
|
logrus.Infof("%d volumes removed successfully", len(volumesToRemove))
|
||||||
} else {
|
} else {
|
||||||
logrus.Info("no volumes removed")
|
logrus.Info("no volumes removed")
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,17 @@ package client
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
"github.com/docker/docker/api/types/volume"
|
"github.com/docker/docker/api/types/volume"
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetVolumes(cl *client.Client, ctx context.Context, server string, fs filters.Args) ([]*volume.Volume, error) {
|
func GetVolumes(cl *client.Client, ctx context.Context, server string, fs filters.Args) ([]*volume.Volume, error) {
|
||||||
volumeListOptions := volume.ListOptions{fs}
|
volumeListOKBody, err := cl.VolumeList(ctx, volume.ListOptions{Filters: fs})
|
||||||
volumeListOKBody, err := cl.VolumeList(ctx, volumeListOptions)
|
|
||||||
volumeList := volumeListOKBody.Volumes
|
volumeList := volumeListOKBody.Volumes
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return volumeList, err
|
return volumeList, err
|
||||||
@ -29,13 +31,32 @@ func GetVolumeNames(volumes []*volume.Volume) []string {
|
|||||||
return volumeNames
|
return volumeNames
|
||||||
}
|
}
|
||||||
|
|
||||||
func RemoveVolumes(cl *client.Client, ctx context.Context, server string, volumeNames []string, force bool) error {
|
func RemoveVolumes(cl *client.Client, ctx context.Context, volumeNames []string, force bool, retries int) error {
|
||||||
for _, volName := range volumeNames {
|
for _, volName := range volumeNames {
|
||||||
err := cl.VolumeRemove(ctx, volName, force)
|
err := retryFunc(5, func() error {
|
||||||
|
return cl.VolumeRemove(context.Background(), volName, force)
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return fmt.Errorf("volume %s: %s", volName, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// retryFunc retries the given function for the given retries. After the nth
|
||||||
|
// retry it waits (n + 1)^2 seconds before the next retry (starting with n=0).
|
||||||
|
// It returns an error if the function still failed after the last retry.
|
||||||
|
func retryFunc(retries int, fn func() error) error {
|
||||||
|
for i := 0; i < retries; i++ {
|
||||||
|
err := fn()
|
||||||
|
if err == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if i+1 < retries {
|
||||||
|
sleep := time.Duration(i+1) * time.Duration(i+1)
|
||||||
|
logrus.Infof("%s: waiting %d seconds before next retry", err, sleep)
|
||||||
|
time.Sleep(sleep * time.Second)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fmt.Errorf("%d retries failed", retries)
|
||||||
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package app
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
ABRA_VERSION="0.8.1-beta"
|
ABRA_VERSION="0.8.1-beta"
|
||||||
ABRA_RELEASE_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$ABRA_VERSION"
|
ABRA_RELEASE_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$ABRA_VERSION"
|
||||||
RC_VERSION="0.8.1-beta"
|
RC_VERSION="0.8.0-rc1-beta"
|
||||||
RC_VERSION_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$RC_VERSION"
|
RC_VERSION_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$RC_VERSION"
|
||||||
|
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
|
@ -70,13 +70,13 @@ setup(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app check "$TEST_APP_DOMAIN"
|
run $ABRA app check "$TEST_APP_DOMAIN"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
@ -86,7 +86,7 @@ setup(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 1'
|
assert_output --partial "Your branch is behind 'origin/main' by 1 commit"
|
||||||
|
|
||||||
# NOTE(d1): we can't quite tell if this will fail or not in the future, so,
|
# NOTE(d1): we can't quite tell if this will fail or not in the future, so,
|
||||||
# since it isn't an important part of what we're testing here, we don't check
|
# since it isn't an important part of what we're testing here, we don't check
|
||||||
@ -94,7 +94,7 @@ setup(){
|
|||||||
run $ABRA app check "$TEST_APP_DOMAIN" --offline
|
run $ABRA app check "$TEST_APP_DOMAIN" --offline
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 1'
|
assert_output --partial "Your branch is behind 'origin/main' by 1 commit"
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ test_cmd_export"
|
|||||||
assert_success
|
assert_success
|
||||||
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE"
|
assert_not_exists "$ABRA_DIR/recipes/$TEST_RECIPE"
|
||||||
|
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'baz'
|
assert_output --partial 'baz'
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ test_cmd_export"
|
|||||||
assert_success
|
assert_success
|
||||||
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_failure
|
assert_failure
|
||||||
assert_output --partial 'locally unstaged changes'
|
assert_output --partial 'locally unstaged changes'
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ test_cmd_export"
|
|||||||
assert_success
|
assert_success
|
||||||
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
assert_exists "$ABRA_DIR/recipes/$TEST_RECIPE/foo"
|
||||||
|
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local --chaos
|
run $ABRA app cmd --local --chaos "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'baz'
|
assert_output --partial 'baz'
|
||||||
|
|
||||||
@ -96,14 +96,14 @@ test_cmd_export"
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'baz'
|
assert_output --partial 'baz'
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --partial "up to date"
|
||||||
|
|
||||||
_reset_recipe "$TEST_RECIPE"
|
_reset_recipe "$TEST_RECIPE"
|
||||||
}
|
}
|
||||||
@ -113,14 +113,14 @@ test_cmd_export"
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local --offline
|
run $ABRA app cmd --local --offline "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'baz'
|
assert_output --partial 'baz'
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe "$TEST_RECIPE"
|
_reset_recipe "$TEST_RECIPE"
|
||||||
}
|
}
|
||||||
@ -132,13 +132,13 @@ test_cmd_export"
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "error if missing arguments when passing --local" {
|
@test "error if missing arguments when passing --local" {
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" --local
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN"
|
||||||
assert_failure
|
assert_failure
|
||||||
assert_output --partial 'missing arguments'
|
assert_output --partial 'missing arguments'
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "cannot use --local and --user at same time" {
|
@test "cannot use --local and --user at same time" {
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local --user root
|
run $ABRA app cmd --local --user root "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_failure
|
assert_failure
|
||||||
assert_output --partial 'cannot use --local & --user together'
|
assert_output --partial 'cannot use --local & --user together'
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@ test_cmd_export"
|
|||||||
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/abra.sh"
|
run rm -rf "$ABRA_DIR/recipes/$TEST_RECIPE/abra.sh"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local --chaos
|
run $ABRA app cmd --local --chaos "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_failure
|
assert_failure
|
||||||
assert_output --partial "$ABRA_DIR/recipes/$TEST_RECIPE/abra.sh does not exist"
|
assert_output --partial "$ABRA_DIR/recipes/$TEST_RECIPE/abra.sh does not exist"
|
||||||
|
|
||||||
@ -155,25 +155,25 @@ test_cmd_export"
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "error if missing command" {
|
@test "error if missing command" {
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" doesnt_exist --local
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" doesnt_exist
|
||||||
assert_failure
|
assert_failure
|
||||||
assert_output --partial "doesn't have a doesnt_exist function"
|
assert_output --partial "doesn't have a doesnt_exist function"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run --local command" {
|
@test "run --local command" {
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd --local
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" test_cmd
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'baz'
|
assert_output --partial 'baz'
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run command with single arg" {
|
@test "run command with single arg" {
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd_arg --local -- bing
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" test_cmd_arg -- bing
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'bing'
|
assert_output --partial 'bing'
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "run command with several args" {
|
@test "run command with several args" {
|
||||||
run $ABRA app cmd "$TEST_APP_DOMAIN" test_cmd_args --local -- bong bang
|
run $ABRA app cmd --local "$TEST_APP_DOMAIN" test_cmd_args -- bong bang
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'bong bang'
|
assert_output --partial 'bong bang'
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ teardown_file(){
|
|||||||
setup(){
|
setup(){
|
||||||
load "$PWD/tests/integration/helpers/common"
|
load "$PWD/tests/integration/helpers/common"
|
||||||
_common_setup
|
_common_setup
|
||||||
|
_reset_recipe
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown(){
|
teardown(){
|
||||||
@ -82,13 +83,13 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app deploy "$TEST_APP_DOMAIN" --no-input --no-converge-checks
|
run $ABRA app deploy "$TEST_APP_DOMAIN" --no-input --no-converge-checks
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
refute_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
_undeploy_app
|
_undeploy_app
|
||||||
@ -100,7 +101,7 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
# NOTE(d1): need to use --chaos to force same commit
|
# NOTE(d1): need to use --chaos to force same commit
|
||||||
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
@ -108,7 +109,7 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_undeploy_app
|
_undeploy_app
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
@ -116,6 +117,9 @@ teardown(){
|
|||||||
|
|
||||||
# bats test_tags=slow
|
# bats test_tags=slow
|
||||||
@test "deploy latest commit if no published versions and no --chaos" {
|
@test "deploy latest commit if no published versions and no --chaos" {
|
||||||
|
# TODO(d1): fix with a new test recipe which has no published versions?
|
||||||
|
skip "known issue, abra-test-recipe has published versions now"
|
||||||
|
|
||||||
latestCommit="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
|
latestCommit="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
|
||||||
|
|
||||||
_remove_tags
|
_remove_tags
|
||||||
@ -140,7 +144,7 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
threeCommitsBack="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
|
threeCommitsBack="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
|
||||||
|
|
||||||
@ -273,6 +277,10 @@ teardown(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "ensure domain is checked" {
|
@test "ensure domain is checked" {
|
||||||
|
if [[ "$TEST_SERVER" == "default" ]]; then
|
||||||
|
skip "domain checks are disabled for local server"
|
||||||
|
fi
|
||||||
|
|
||||||
appDomain="custom-html.DOESNTEXIST"
|
appDomain="custom-html.DOESNTEXIST"
|
||||||
|
|
||||||
run $ABRA app new custom-html \
|
run $ABRA app new custom-html \
|
||||||
|
@ -45,7 +45,7 @@ teardown(){
|
|||||||
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial "Your branch is up to date with 'origin/main'."
|
assert_output --partial "up to date"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "create new app with version" {
|
@test "create new app with version" {
|
||||||
@ -121,7 +121,7 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial "Your branch is behind 'origin/main' by 3 commits, and can be fast-forwarded."
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app new "$TEST_RECIPE" \
|
run $ABRA app new "$TEST_RECIPE" \
|
||||||
--no-input \
|
--no-input \
|
||||||
@ -131,7 +131,7 @@ teardown(){
|
|||||||
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial "Your branch is up to date with 'origin/main'."
|
assert_output --partial "up to date"
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
@ -141,7 +141,7 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial "Your branch is behind 'origin/main' by 3 commits, and can be fast-forwarded."
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
# NOTE(d1): need to use --chaos to force same commit
|
# NOTE(d1): need to use --chaos to force same commit
|
||||||
run $ABRA app new "$TEST_RECIPE" \
|
run $ABRA app new "$TEST_RECIPE" \
|
||||||
@ -154,7 +154,7 @@ teardown(){
|
|||||||
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial "Your branch is behind 'origin/main' by 3 commits, and can be fast-forwarded."
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@ teardown(){
|
|||||||
|
|
||||||
_undeploy_app
|
_undeploy_app
|
||||||
|
|
||||||
run $ABRA app volume rm "$TEST_APP_DOMAIN"
|
run $ABRA app volume rm "$TEST_APP_DOMAIN" --no-input
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run $ABRA app volume ls "$TEST_APP_DOMAIN"
|
run $ABRA app volume ls "$TEST_APP_DOMAIN"
|
||||||
|
@ -109,13 +109,13 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app restore "$TEST_APP_DOMAIN" app DOESNTEXIST
|
run $ABRA app restore "$TEST_APP_DOMAIN" app
|
||||||
assert_failure
|
assert_failure
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --partial "up to date"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "ensure recipe not up to date if --offline" {
|
@test "ensure recipe not up to date if --offline" {
|
||||||
@ -126,19 +126,19 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app restore "$TEST_APP_DOMAIN" app DOESNTEXIST --offline
|
run $ABRA app restore "$TEST_APP_DOMAIN" app --offline
|
||||||
assert_failure
|
assert_failure
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$latestCommit"
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$latestCommit"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --partial "HEAD detached at $latestCommit"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "error if missing service" {
|
@test "error if missing service" {
|
||||||
|
@ -50,13 +50,13 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app rollback "$TEST_APP_DOMAIN" --no-input --no-converge-checks
|
run $ABRA app rollback "$TEST_APP_DOMAIN" --no-input --no-converge-checks
|
||||||
assert_failure
|
assert_failure
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --partial "up to date"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "ensure recipe not up to date if --offline" {
|
@test "ensure recipe not up to date if --offline" {
|
||||||
@ -67,14 +67,14 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA app rollback "$TEST_APP_DOMAIN" \
|
run $ABRA app rollback "$TEST_APP_DOMAIN" \
|
||||||
--no-input --no-converge-checks --offline
|
--no-input --no-converge-checks --offline
|
||||||
assert_failure
|
assert_failure
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$latestCommit"
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" checkout "$latestCommit"
|
||||||
assert_success
|
assert_success
|
||||||
@ -131,7 +131,7 @@ teardown(){
|
|||||||
latestCommit="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
|
latestCommit="$(git -C "$ABRA_DIR/recipes/$TEST_RECIPE" rev-parse --short HEAD)"
|
||||||
|
|
||||||
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
run $ABRA app deploy "$TEST_APP_DOMAIN" \
|
||||||
--no-input --no-converge-checks --chaos
|
--no-input --chaos
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial "$latestCommit"
|
assert_output --partial "$latestCommit"
|
||||||
assert_output --partial 'chaos'
|
assert_output --partial 'chaos'
|
||||||
|
@ -8,7 +8,7 @@ setup_file(){
|
|||||||
run $ABRA app new "$TEST_RECIPE" \
|
run $ABRA app new "$TEST_RECIPE" \
|
||||||
--no-input \
|
--no-input \
|
||||||
--server "$TEST_SERVER" \
|
--server "$TEST_SERVER" \
|
||||||
--domain "$TEST_APP_DOMAIN" \
|
--domain "$TEST_APP_DOMAIN"
|
||||||
assert_success
|
assert_success
|
||||||
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
}
|
}
|
||||||
@ -19,13 +19,6 @@ teardown_file(){
|
|||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
|
|
||||||
teardown(){
|
|
||||||
# https://github.com/bats-core/bats-core/issues/383#issuecomment-738628888
|
|
||||||
if [[ -z "${BATS_TEST_COMPLETED}" ]]; then
|
|
||||||
_undeploy_app
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
setup(){
|
setup(){
|
||||||
load "$PWD/tests/integration/helpers/common"
|
load "$PWD/tests/integration/helpers/common"
|
||||||
_common_setup
|
_common_setup
|
||||||
|
@ -59,6 +59,8 @@ teardown(){
|
|||||||
|
|
||||||
# bats test_tags=slow
|
# bats test_tags=slow
|
||||||
@test "error if not in catalogue" {
|
@test "error if not in catalogue" {
|
||||||
|
skip "known issue, see https://git.coopcloud.tech/coop-cloud/recipes-catalogue-json/issues/6"
|
||||||
|
|
||||||
_deploy_app
|
_deploy_app
|
||||||
|
|
||||||
run $ABRA app version "$TEST_APP_DOMAIN"
|
run $ABRA app version "$TEST_APP_DOMAIN"
|
||||||
@ -92,7 +94,7 @@ teardown(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
# NOTE(d1): to let the stack come down before nuking volumes
|
# NOTE(d1): to let the stack come down before nuking volumes
|
||||||
sleep 3
|
sleep 5
|
||||||
|
|
||||||
run $ABRA app volume remove "$appDomain" --no-input
|
run $ABRA app volume remove "$appDomain" --no-input
|
||||||
assert_success
|
assert_success
|
||||||
|
@ -78,9 +78,6 @@ teardown(){
|
|||||||
|
|
||||||
_undeploy_app
|
_undeploy_app
|
||||||
|
|
||||||
# NOTE(d1): to let the stack come down before nuking volumes
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
run $ABRA app volume rm "$TEST_APP_DOMAIN" --force
|
run $ABRA app volume rm "$TEST_APP_DOMAIN" --force
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'volumes removed successfully'
|
assert_output --partial 'volumes removed successfully'
|
||||||
@ -92,9 +89,6 @@ teardown(){
|
|||||||
|
|
||||||
_undeploy_app
|
_undeploy_app
|
||||||
|
|
||||||
# NOTE(d1): to let the stack come down before nuking volumes
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
run $ABRA app volume rm "$TEST_APP_DOMAIN" --force
|
run $ABRA app volume rm "$TEST_APP_DOMAIN" --force
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'volumes removed successfully'
|
assert_output --partial 'volumes removed successfully'
|
||||||
|
@ -49,7 +49,7 @@ _reset_app(){
|
|||||||
run $ABRA app new "$TEST_RECIPE" \
|
run $ABRA app new "$TEST_RECIPE" \
|
||||||
--no-input \
|
--no-input \
|
||||||
--server "$TEST_SERVER" \
|
--server "$TEST_SERVER" \
|
||||||
--domain "$TEST_APP_DOMAIN" \
|
--domain "$TEST_APP_DOMAIN"
|
||||||
assert_success
|
assert_success
|
||||||
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
assert_exists "$ABRA_DIR/servers/$TEST_SERVER/$TEST_APP_DOMAIN.env"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,11 @@ _add_server() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_rm_server() {
|
_rm_server() {
|
||||||
run $ABRA server remove --no-input "$TEST_SERVER"
|
if [[ "$TEST_SERVER" == "default" ]]; then
|
||||||
|
run rm -rf "$ABRA_DIR/servers/default"
|
||||||
|
else
|
||||||
|
run $ABRA server remove --no-input "$TEST_SERVER"
|
||||||
|
fi
|
||||||
assert_success
|
assert_success
|
||||||
assert_not_exists "$ABRA_DIR/servers/$TEST_SERVER"
|
assert_not_exists "$ABRA_DIR/servers/$TEST_SERVER"
|
||||||
}
|
}
|
||||||
|
@ -66,13 +66,13 @@ setup() {
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA recipe lint "$TEST_RECIPE"
|
run $ABRA recipe lint "$TEST_RECIPE"
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
@ -82,13 +82,13 @@ setup() {
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA recipe lint "$TEST_RECIPE" --offline
|
run $ABRA recipe lint "$TEST_RECIPE" --offline
|
||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
|
@ -61,14 +61,14 @@ setup(){
|
|||||||
assert_success
|
assert_success
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
assert_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
run $ABRA recipe upgrade "$TEST_RECIPE" --no-input
|
run $ABRA recipe upgrade "$TEST_RECIPE" --no-input
|
||||||
assert_success
|
assert_success
|
||||||
assert_output --partial 'can upgrade service: app'
|
assert_output --partial 'can upgrade service: app'
|
||||||
|
|
||||||
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
run git -C "$ABRA_DIR/recipes/$TEST_RECIPE" status
|
||||||
refute_output --partial 'behind 3'
|
assert_output --regexp 'behind .* 3 commits'
|
||||||
|
|
||||||
_reset_recipe
|
_reset_recipe
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,8 @@ setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test "error if not present in catalogue" {
|
@test "error if not present in catalogue" {
|
||||||
|
skip "known issue, see https://git.coopcloud.tech/coop-cloud/recipes-catalogue-json/issues/6"
|
||||||
|
|
||||||
run $ABRA recipe versions "$TEST_RECIPE"
|
run $ABRA recipe versions "$TEST_RECIPE"
|
||||||
assert_failure
|
assert_failure
|
||||||
assert_output --partial "is not published on the catalogue"
|
assert_output --partial "is not published on the catalogue"
|
||||||
|
Reference in New Issue
Block a user