Compare commits

...

15 Commits

Author SHA1 Message Date
3wc
24970360fa Regen POT
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-02 14:00:40 -04:00
3wc
b3bd253684 4matting
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-02 13:59:45 -04:00
3wc
32c2ea5b53 Roll out pre-deploy changes to rollback and upgrade 2025-09-02 13:58:45 -04:00
3wc
12b01ace71 Show image differences in pre-deploy overview
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-02 13:48:09 -04:00
3wc
58d15c35d8 Move secret- and config-gathering to separate file
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-02 12:15:17 -04:00
3wc
a02be5705e Resolve circular import
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-02 12:00:47 -04:00
3wc
371b70b537 Add GetSecretNamesForStack, tidy up GetConfigNamesForStack
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-02 11:32:37 -04:00
3wc
7558550d96 Warn instead of error on missing config version
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-01 21:03:16 -04:00
3wc
d94335941f Working config version comparison
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-01 16:26:00 -04:00
3wc
88ea705a33 Skip empty sections in deploy overview
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-01 15:33:56 -04:00
3wc
faa8cd12d9 Only show remote configs used in deployment 2025-09-01 15:22:40 -04:00
3wc
65ed2f6113 Add some spacing, might delete 2025-09-01 15:07:26 -04:00
3wc
746485cfb0 Tidy up a little 2025-09-01 14:56:50 -04:00
3wc
2b1bece9b6 WIP: Working secret and config versions during deploy overview
Some checks failed
continuous-integration/drone/push Build is failing
2025-09-01 14:49:49 -04:00
3wc
c05d0fef24 WIP: Initial stab at secrets/configs/images 2025-09-01 13:43:10 -04:00
10 changed files with 453 additions and 100 deletions

View File

@ -14,6 +14,7 @@ import (
appPkg "coopcloud.tech/abra/pkg/app"
"coopcloud.tech/abra/pkg/client"
"coopcloud.tech/abra/pkg/deploy"
"coopcloud.tech/abra/pkg/dns"
"coopcloud.tech/abra/pkg/formatter"
"coopcloud.tech/abra/pkg/i18n"
@ -187,12 +188,35 @@ checkout as-is. Recipe commit hashes are also supported as values for
deployedVersion = deployMeta.Version
}
// Gather secrets
secretInfo, err := deploy.GatherSecretsForDeploy(cl, app)
if err != nil {
log.Fatal(err)
}
// Gather configs
configInfo, err := deploy.GatherConfigsForDeploy(cl, app, compose, abraShEnv)
if err != nil {
log.Fatal(err)
}
// Gather images
imageInfo, err := deploy.GatherImagesForDeploy(cl, app, compose)
if err != nil {
log.Fatal(err)
}
// Show deploy overview
if err := internal.DeployOverview(
app,
deployedVersion,
toDeployVersion,
"",
deployWarnMessages,
strings.Join(secretInfo, "\n"),
strings.Join(configInfo, "\n"),
strings.Join(imageInfo, "\n"),
); err != nil {
log.Fatal(err)
}

View File

@ -2,11 +2,13 @@ package app
import (
"errors"
"strings"
"coopcloud.tech/abra/pkg/app"
appPkg "coopcloud.tech/abra/pkg/app"
"coopcloud.tech/abra/pkg/autocomplete"
"coopcloud.tech/abra/pkg/config"
"coopcloud.tech/abra/pkg/deploy"
"coopcloud.tech/abra/pkg/envfile"
"coopcloud.tech/abra/pkg/formatter"
"coopcloud.tech/abra/pkg/i18n"
@ -185,6 +187,24 @@ beforehand. See "abra app backup" for more.`),
}
appPkg.SetUpdateLabel(compose, stackName, app.Env)
// Gather secrets
secretInfo, err := deploy.GatherSecretsForDeploy(cl, app)
if err != nil {
log.Fatal(err)
}
// Gather configs
configInfo, err := deploy.GatherConfigsForDeploy(cl, app, compose, abraShEnv)
if err != nil {
log.Fatal(err)
}
// Gather images
imageInfo, err := deploy.GatherImagesForDeploy(cl, app, compose)
if err != nil {
log.Fatal(err)
}
// NOTE(d1): no release notes implemeneted for rolling back
if err := internal.DeployOverview(
app,
@ -192,6 +212,9 @@ beforehand. See "abra app backup" for more.`),
chosenDowngrade,
"",
downgradeWarnMessages,
strings.Join(secretInfo, "\n"),
strings.Join(configInfo, "\n"),
strings.Join(imageInfo, "\n"),
); err != nil {
log.Fatal(err)
}

View File

@ -67,6 +67,9 @@ Passing "--prune/-p" does not remove those volumes.`),
config.NO_DOMAIN_DEFAULT,
"",
nil,
"",
"",
"",
); err != nil {
log.Fatal(err)
}

View File

@ -7,11 +7,11 @@ import (
"strings"
"coopcloud.tech/abra/cli/internal"
"coopcloud.tech/abra/pkg/app"
appPkg "coopcloud.tech/abra/pkg/app"
"coopcloud.tech/abra/pkg/autocomplete"
"coopcloud.tech/abra/pkg/client"
"coopcloud.tech/abra/pkg/config"
"coopcloud.tech/abra/pkg/deploy"
"coopcloud.tech/abra/pkg/envfile"
"coopcloud.tech/abra/pkg/formatter"
"coopcloud.tech/abra/pkg/i18n"
@ -212,6 +212,24 @@ beforehand. See "abra app backup" for more.`),
}
}
// Gather secrets
secretInfo, err := deploy.GatherSecretsForDeploy(cl, app)
if err != nil {
log.Fatal(err)
}
// Gather configs
configInfo, err := deploy.GatherConfigsForDeploy(cl, app, compose, abraShEnv)
if err != nil {
log.Fatal(err)
}
// Gather images
imageInfo, err := deploy.GatherImagesForDeploy(cl, app, compose)
if err != nil {
log.Fatal(err)
}
if showReleaseNotes {
fmt.Print(upgradeReleaseNotes)
return
@ -230,6 +248,9 @@ beforehand. See "abra app backup" for more.`),
chosenUpgrade,
upgradeReleaseNotes,
upgradeWarnMessages,
strings.Join(secretInfo, "\n"),
strings.Join(configInfo, "\n"),
strings.Join(imageInfo, "\n"),
); err != nil {
log.Fatal(err)
}
@ -307,7 +328,7 @@ func chooseUpgrade(
}
func getReleaseNotes(
app app.App,
app appPkg.App,
versions []string,
chosenUpgrade string,
deployMeta stack.DeployMeta,
@ -352,7 +373,7 @@ func getReleaseNotes(
// ensureUpgradesAvailable ensures that there are available upgrades.
func ensureUpgradesAvailable(
app app.App,
app appPkg.App,
versions []string,
availableUpgrades *[]string,
deployMeta stack.DeployMeta,
@ -384,7 +405,7 @@ func ensureUpgradesAvailable(
// validateUpgradeVersionArg validates the specific version.
func validateUpgradeVersionArg(
specificVersion string,
app app.App,
app appPkg.App,
deployMeta stack.DeployMeta,
) error {
parsedSpecificVersion, err := tagcmp.Parse(specificVersion)
@ -411,7 +432,7 @@ func validateUpgradeVersionArg(
// ensureDeployed ensures the app is deployed and if so, returns deployment
// meta info.
func ensureDeployed(cl *dockerClient.Client, app app.App) (stack.DeployMeta, error) {
func ensureDeployed(cl *dockerClient.Client, app appPkg.App) (stack.DeployMeta, error) {
log.Debug(i18n.G("checking whether %s is already deployed", app.StackName()))
deployMeta, err := stack.IsDeployed(context.Background(), cl, app.StackName())

View File

@ -50,6 +50,9 @@ func DeployOverview(
toDeployVersion string,
releaseNotes string,
warnMessages []string,
secrets string,
configs string,
images string,
) error {
deployConfig := "compose.yml"
if composeFiles, ok := app.Env["COMPOSE_FILE"]; ok {
@ -80,6 +83,24 @@ func DeployOverview(
{i18n.G("CURRENT DEPLOYMENT"), formatter.BoldDirtyDefault(deployedVersion)},
{i18n.G("ENV VERSION"), formatter.BoldDirtyDefault(envVersion)},
{i18n.G("NEW DEPLOYMENT"), formatter.BoldDirtyDefault(toDeployVersion)},
{"", ""},
{i18n.G("IMAGES"), images},
}
if len(secrets) > 0 {
secretsRows := [][]string{
{"", ""},
{i18n.G("SECRETS"), secrets},
}
rows = append(rows, secretsRows...)
}
if len(configs) > 0 {
configsRows := [][]string{
{"", ""},
{i18n.G("CONFIGS"), configs},
}
rows = append(rows, configsRows...)
}
deployType := getDeployType(deployedVersion, toDeployVersion)

View File

@ -3,6 +3,7 @@ package client
import (
"context"
"errors"
"strings"
"coopcloud.tech/abra/pkg/i18n"
"github.com/docker/docker/api/types/filters"
@ -37,3 +38,12 @@ func RemoveConfigs(cl *client.Client, ctx context.Context, configNames []string,
}
return nil
}
func GetConfigNameAndVersion(fullName string, stackName string) (string, string, error) {
name := strings.TrimPrefix(fullName, stackName+"_")
if lastUnderscore := strings.LastIndex(name, "_"); lastUnderscore != -1 {
return name[0:lastUnderscore], name[lastUnderscore+1:], nil
} else {
return "", "", errors.New(i18n.G("can't parse version from config '%s'", fullName))
}
}

View File

@ -17,3 +17,11 @@ func StoreSecret(cl *client.Client, secretName, secretValue, server string) erro
return nil
}
func GetSecretNames(secrets []swarm.Secret) []string {
var secretNames []string
for _, secret := range secrets {
secretNames = append(secretNames, secret.Spec.Name)
}
return secretNames
}

226
pkg/deploy/utils.go Normal file
View File

@ -0,0 +1,226 @@
package deploy
import (
"context"
"errors"
"fmt"
"regexp"
"sort"
"strings"
appPkg "coopcloud.tech/abra/pkg/app"
"coopcloud.tech/abra/pkg/client"
"coopcloud.tech/abra/pkg/log"
"coopcloud.tech/abra/pkg/secret"
composetypes "github.com/docker/cli/cli/compose/types"
"github.com/docker/docker/api/types/swarm"
dockerClient "github.com/docker/docker/client"
)
// GetConfigsForStack retrieves all Docker configs attached to services in a given stack.
func GetConfigsForStack(cl *dockerClient.Client, app appPkg.App) (map[string]string, error) {
filters, err := app.Filters(false, false)
if err != nil {
return nil, err
}
// List all services in the stack
services, err := cl.ServiceList(context.Background(), swarm.ServiceListOptions{
Filters: filters,
})
if err != nil {
return nil, err
}
// Collect unique config names with versions
configs := make(map[string]string)
for _, service := range services {
if service.Spec.TaskTemplate.ContainerSpec != nil {
for _, configRef := range service.Spec.TaskTemplate.ContainerSpec.Configs {
configName := configRef.ConfigName
if configName == "" {
continue
}
configBaseName, configVersion, err := client.GetConfigNameAndVersion(configName, app.StackName())
if err != nil {
log.Warn(err)
continue
}
existingConfigVersion, ok := configs[configBaseName]
if !ok {
// First time seeing this, add to map
configs[configBaseName] = configVersion
} else {
// Just make sure the versions are the same..
if existingConfigVersion != configVersion {
log.Warnf("different versions for config '%s', '%s' and %s'", configBaseName, existingConfigVersion, configVersion)
}
}
}
}
}
return configs, nil
}
func GetImageNameAndTag(imageName string) (string, string, error) {
imageParts := regexp.MustCompile("^([^:]*):([^@]*)@?").FindSubmatch([]byte(imageName))
if len(imageParts) == 0 {
return "", "", errors.New("can't determine image version for image '%s'")
}
imageBaseName := string(imageParts[1])
imageTag := string(imageParts[2])
return imageBaseName, imageTag, nil
}
// GetImagesForStack retrieves all Docker images for services in a given stack.
func GetImagesForStack(cl *dockerClient.Client, app appPkg.App) (map[string]string, error) {
filters, err := app.Filters(false, false)
if err != nil {
return nil, err
}
// List all services in the stack
services, err := cl.ServiceList(context.Background(), swarm.ServiceListOptions{
Filters: filters,
})
if err != nil {
return nil, err
}
// Collect unique image names with versions
images := make(map[string]string)
for _, service := range services {
if service.Spec.TaskTemplate.ContainerSpec != nil {
imageName := service.Spec.TaskTemplate.ContainerSpec.Image
imageBaseName, imageTag, err := GetImageNameAndTag(imageName)
if err != nil {
log.Warn(err)
continue
}
existingImageVersion, ok := images[imageBaseName]
if !ok {
// First time seeing this, add to map
images[imageBaseName] = imageTag
} else {
// Just make sure the versions are the same..
if existingImageVersion != imageTag {
log.Warnf("different versions for image '%s', '%s' and %s'", imageBaseName, existingImageVersion, imageTag)
}
}
}
}
return images, nil
}
func GatherSecretsForDeploy(cl *dockerClient.Client, app appPkg.App) ([]string, error) {
secStats, err := secret.PollSecretsStatus(cl, app)
if err != nil {
return nil, err
}
var secretInfo []string
// Sort secrets to ensure reproducible output
sort.Slice(secStats, func(i, j int) bool {
return secStats[i].LocalName < secStats[j].LocalName
})
for _, secStat := range secStats {
secretInfo = append(secretInfo, fmt.Sprintf("%s: %s", secStat.LocalName, secStat.Version))
}
return secretInfo, nil
}
func GatherConfigsForDeploy(cl *dockerClient.Client, app appPkg.App, compose *composetypes.Config, abraShEnv map[string]string) ([]string, error) {
// Get current configs from existing deployment
currentConfigs, err := GetConfigsForStack(cl, app)
if err != nil {
return nil, err
}
log.Debugf("Deployed config names: %v", currentConfigs)
// Get new configs from the compose specification
newConfigs := compose.Configs
var configInfo []string
for configName := range newConfigs {
log.Debugf("Searching abra.sh for version for %s", configName)
versionKey := strings.ToUpper(configName) + "_VERSION"
newVersion, exists := abraShEnv[versionKey]
if !exists {
log.Warnf("No version found for config %s", configName)
configInfo = append(configInfo, fmt.Sprintf("%s: ? (missing version)", configName))
continue
}
if currentVersion, exists := currentConfigs[configName]; exists {
if currentVersion == newVersion {
configInfo = append(configInfo, fmt.Sprintf("%s: %s (unchanged)", configName, newVersion))
} else {
configInfo = append(configInfo, fmt.Sprintf("%s: %s → %s", configName, currentVersion, newVersion))
}
} else {
configInfo = append(configInfo, fmt.Sprintf("%s: %s (new)", configName, newVersion))
}
}
return configInfo, nil
}
func GatherImagesForDeploy(cl *dockerClient.Client, app appPkg.App, compose *composetypes.Config) ([]string, error) {
// Get current images from existing deployment
currentImages, err := GetImagesForStack(cl, app)
if err != nil {
return nil, err
}
log.Infof("Deployed images: %v", currentImages)
// Proposed new images from the compose files
newImages := make(map[string]string)
for _, service := range compose.Services {
imageBaseName, imageTag, err := GetImageNameAndTag(service.Image)
if err != nil {
log.Warn(err)
continue
}
existingImageVersion, ok := newImages[imageBaseName]
if !ok {
// First time seeing this, add to map
newImages[imageBaseName] = imageTag
} else {
// Just make sure the versions are the same..
if existingImageVersion != imageTag {
log.Warnf("different versions for image '%s', '%s' and %s'", imageBaseName, existingImageVersion, imageTag)
}
}
}
log.Infof("Proposed images: %v", newImages)
var imageInfo []string
for newImageName, newImageVersion := range newImages {
if currentVersion, exists := currentImages[newImageName]; exists {
if currentVersion == newImageVersion {
imageInfo = append(imageInfo, fmt.Sprintf("%s: %s (unchanged)", newImageName, newImageVersion))
} else {
imageInfo = append(imageInfo, fmt.Sprintf("%s: %s → %s", newImageName, currentVersion, newImageVersion))
}
} else {
imageInfo = append(imageInfo, fmt.Sprintf("%s: %s (new)", newImageName, newImageVersion))
}
}
return imageInfo, nil
}

View File

@ -7,7 +7,7 @@
msgid ""
msgstr "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: EMAIL\n"
"POT-Creation-Date: 2025-08-29 16:31+0200\n"
"POT-Creation-Date: 2025-09-02 14:00-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -106,7 +106,7 @@ msgid " # run <cmd> with args/flags\n"
" abra app run 1312.net app --user nobody -- ls -lha"
msgstr ""
#: ./cli/app/deploy.go:38
#: ./cli/app/deploy.go:39
msgid " # standard deployment\n"
" abra app deploy 1312.net\n"
"\n"
@ -144,7 +144,7 @@ msgstr ""
msgid " abra upgrade --rc"
msgstr ""
#: ./cli/app/rollback.go:44
#: ./cli/app/rollback.go:46
msgid " # standard rollback\n"
" abra app rollback 1312.net\n"
"\n"
@ -191,7 +191,7 @@ msgstr ""
msgid "%s (created %v)"
msgstr ""
#: ./cli/internal/deploy.go:86
#: ./cli/internal/deploy.go:107
#, c-format
msgid "%s OVERVIEW"
msgstr ""
@ -221,7 +221,7 @@ msgstr ""
msgid "%s does not exist for %s, use /bin/sh as fallback"
msgstr ""
#: ./cli/app/cmd.go:110 ./cli/internal/deploy.go:151
#: ./cli/app/cmd.go:110 ./cli/internal/deploy.go:172
#, c-format
msgid "%s does not exist for %s?"
msgstr ""
@ -296,7 +296,7 @@ msgstr ""
msgid "%s inserted into pass store"
msgstr ""
#: ./cli/app/deploy.go:98
#: ./cli/app/deploy.go:99
#, c-format
msgid "%s is already deployed"
msgstr ""
@ -321,17 +321,17 @@ msgstr ""
msgid "%s is missing the TYPE env var?"
msgstr ""
#: ./cli/app/rollback.go:280 ./cli/app/rollback.go:284
#: ./cli/app/rollback.go:303 ./cli/app/rollback.go:307
#, c-format
msgid "%s is not a downgrade for %s?"
msgstr ""
#: ./cli/app/upgrade.go:402 ./cli/app/upgrade.go:406
#: ./cli/app/upgrade.go:423 ./cli/app/upgrade.go:427
#, c-format
msgid "%s is not an upgrade for %s?"
msgstr ""
#: ./cli/app/logs.go:60 ./cli/app/ps.go:58 ./cli/app/restart.go:95 ./cli/app/services.go:51 ./cli/app/undeploy.go:61 ./cli/app/upgrade.go:423 ./cli/updater/updater.go:251
#: ./cli/app/logs.go:60 ./cli/app/ps.go:58 ./cli/app/restart.go:95 ./cli/app/services.go:51 ./cli/app/undeploy.go:61 ./cli/app/upgrade.go:444 ./cli/updater/updater.go:251
#, c-format
msgid "%s is not deployed?"
msgstr ""
@ -346,7 +346,7 @@ msgstr ""
msgid "%s is still deployed. Run \"abra app undeploy %s\""
msgstr ""
#: ./cli/app/deploy.go:168 ./cli/app/upgrade.go:210
#: ./cli/app/deploy.go:169 ./cli/app/upgrade.go:210
#, c-format
msgid "%s missing from %s.env"
msgstr ""
@ -476,12 +476,12 @@ msgstr ""
msgid "%s: waiting %d seconds before next retry"
msgstr ""
#: ./cli/app/upgrade.go:397
#: ./cli/app/upgrade.go:418
#, c-format
msgid "'%s' is not a known version"
msgstr ""
#: ./cli/app/rollback.go:275 ./cli/app/upgrade.go:392
#: ./cli/app/rollback.go:298 ./cli/app/upgrade.go:413
#, c-format
msgid "'%s' is not a known version for %s"
msgstr ""
@ -552,7 +552,7 @@ msgstr ""
msgid "Both local recipe and live deployment labels are shown."
msgstr ""
#: ./cli/app/backup.go:298 ./cli/app/backup.go:314 ./cli/app/check.go:90 ./cli/app/cmd.go:277 ./cli/app/cp.go:381 ./cli/app/deploy.go:335 ./cli/app/labels.go:138 ./cli/app/new.go:368 ./cli/app/ps.go:209 ./cli/app/restart.go:157 ./cli/app/restore.go:134 ./cli/app/secret.go:553 ./cli/app/secret.go:593 ./cli/app/secret.go:617 ./cli/app/secret.go:625 ./cli/catalogue/catalogue.go:309 ./cli/recipe/lint.go:131 ./cli/updater/updater.go:544
#: ./cli/app/backup.go:298 ./cli/app/backup.go:314 ./cli/app/check.go:90 ./cli/app/cmd.go:277 ./cli/app/cp.go:381 ./cli/app/deploy.go:359 ./cli/app/labels.go:138 ./cli/app/new.go:368 ./cli/app/ps.go:209 ./cli/app/restart.go:157 ./cli/app/restore.go:134 ./cli/app/secret.go:553 ./cli/app/secret.go:593 ./cli/app/secret.go:617 ./cli/app/secret.go:625 ./cli/catalogue/catalogue.go:309 ./cli/recipe/lint.go:131 ./cli/updater/updater.go:544
msgid "C"
msgstr ""
@ -560,7 +560,7 @@ msgstr ""
msgid "CHAOS"
msgstr ""
#: ./cli/internal/deploy.go:120
#: ./cli/internal/deploy.go:141
msgid "CHAOS DEPLOY"
msgstr ""
@ -579,15 +579,19 @@ msgstr ""
msgid "COMPOSE_FILE detected, loading %s"
msgstr ""
#: ./cli/internal/deploy.go:78
#: ./cli/internal/deploy.go:81
msgid "CONFIG"
msgstr ""
#: ./cli/internal/deploy.go:101
msgid "CONFIGS"
msgstr ""
#: ./cli/app/secret.go:465
msgid "CREATED ON SERVER"
msgstr ""
#: ./cli/internal/deploy.go:80
#: ./cli/internal/deploy.go:83
msgid "CURRENT DEPLOYMENT"
msgstr ""
@ -693,11 +697,11 @@ msgid "Creates a new app from a default recipe.\n"
"on your $PATH."
msgstr ""
#: ./cli/app/deploy.go:351 ./cli/app/new.go:344 ./cli/app/rollback.go:332 ./cli/app/upgrade.go:443
#: ./cli/app/deploy.go:375 ./cli/app/new.go:344 ./cli/app/rollback.go:355 ./cli/app/upgrade.go:464
msgid "D"
msgstr ""
#: ./cli/internal/deploy.go:133 ./cli/internal/deploy.go:137
#: ./cli/internal/deploy.go:154 ./cli/internal/deploy.go:158
msgid "DEPLOY"
msgstr ""
@ -705,20 +709,20 @@ msgstr ""
msgid "DEPLOYED LABELS"
msgstr ""
#: ./cli/app/list.go:218 ./cli/internal/deploy.go:75
#: ./cli/app/list.go:218 ./cli/internal/deploy.go:78
msgid "DOMAIN"
msgstr ""
#: ./cli/internal/deploy.go:142
#: ./cli/internal/deploy.go:163
msgid "DOWNGRADE"
msgstr ""
#. translators: Short description for `app deploy` command
#: ./cli/app/deploy.go:32
#: ./cli/app/deploy.go:33
msgid "Deploy an app"
msgstr ""
#: ./cli/app/deploy.go:33
#: ./cli/app/deploy.go:34
msgid "Deploy an app.\n"
"\n"
"This command supports chaos operations. Use \"--chaos/-C\" to deploy your recipe\n"
@ -747,7 +751,7 @@ msgstr ""
msgid "ENV OVERVIEW"
msgstr ""
#: ./cli/internal/deploy.go:81
#: ./cli/internal/deploy.go:84
msgid "ENV VERSION"
msgstr ""
@ -860,6 +864,10 @@ msgstr ""
msgid "IMAGE"
msgstr ""
#: ./cli/internal/deploy.go:87
msgid "IMAGES"
msgstr ""
#. translators: Short description for `app secret insert` command
#: ./cli/app/secret.go:154
msgid "Insert secret"
@ -961,11 +969,11 @@ msgstr ""
msgid "NAME"
msgstr ""
#: ./cli/internal/deploy.go:129
#: ./cli/internal/deploy.go:150
msgid "NEW DEPLOY"
msgstr ""
#: ./cli/internal/deploy.go:82
#: ./cli/internal/deploy.go:85
msgid "NEW DEPLOYMENT"
msgstr ""
@ -1009,7 +1017,7 @@ msgstr ""
msgid "README.md metadata filled in"
msgstr ""
#: ./cli/app/list.go:218 ./cli/internal/deploy.go:76
#: ./cli/app/list.go:218 ./cli/internal/deploy.go:79
msgid "RECIPE"
msgstr ""
@ -1098,7 +1106,7 @@ msgid "Restore a snapshot"
msgstr ""
#. translators: Short description for `app rollback` command
#: ./cli/app/rollback.go:29
#: ./cli/app/rollback.go:31
msgid "Roll an app back to a previous version"
msgstr ""
@ -1129,11 +1137,15 @@ msgstr ""
msgid "S"
msgstr ""
#: ./cli/internal/deploy.go:93
msgid "SECRETS"
msgstr ""
#: ./cli/app/new.go:195
msgid "SECRETS OVERVIEW"
msgstr ""
#: ./cli/app/list.go:218 ./cli/internal/deploy.go:77
#: ./cli/app/list.go:218 ./cli/internal/deploy.go:80
msgid "SERVER"
msgstr ""
@ -1266,7 +1278,7 @@ msgid "This command restarts services within a deployed app.\n"
"Pass \"--all-services/-a\" to restart all services."
msgstr ""
#: ./cli/app/rollback.go:30
#: ./cli/app/rollback.go:32
msgid "This command rolls an app back to a previous version.\n"
"\n"
"Unlike \"abra app deploy\", chaos operations are not supported here. Only recipe\n"
@ -1330,15 +1342,15 @@ msgid "To load completions:\n"
" # and source this file from your PowerShell profile."
msgstr ""
#: ./cli/internal/deploy.go:123
#: ./cli/internal/deploy.go:144
msgid "UNCHAOS DEPLOY"
msgstr ""
#: ./cli/internal/deploy.go:117
#: ./cli/internal/deploy.go:138
msgid "UNDEPLOY"
msgstr ""
#: ./cli/app/list.go:224 ./cli/internal/deploy.go:140
#: ./cli/app/list.go:224 ./cli/internal/deploy.go:161
msgid "UPGRADE"
msgstr ""
@ -1642,7 +1654,7 @@ msgstr ""
msgid "attempting to run %s"
msgstr ""
#: ./cli/app/deploy.go:231 ./cli/app/upgrade.go:269
#: ./cli/app/deploy.go:255 ./cli/app/upgrade.go:290
#, c-format
msgid "attempting to run post deploy commands, saw: %s"
msgstr ""
@ -1666,7 +1678,7 @@ msgstr ""
msgid "autocomplete [bash|zsh|fish|powershell]"
msgstr ""
#: ./cli/app/deploy.go:61 ./cli/app/logs.go:34 ./cli/app/rollback.go:60 ./cli/app/secret.go:45 ./cli/app/secret.go:183 ./cli/app/secret.go:348 ./cli/app/upgrade.go:60 ./pkg/autocomplete/autocomplete.go:18 ./pkg/autocomplete/autocomplete.go:33 ./pkg/autocomplete/autocomplete.go:44 ./pkg/autocomplete/autocomplete.go:50 ./pkg/autocomplete/autocomplete.go:70 ./pkg/autocomplete/autocomplete.go:88 ./pkg/autocomplete/autocomplete.go:104 ./pkg/autocomplete/autocomplete.go:110 ./pkg/autocomplete/autocomplete.go:125
#: ./cli/app/deploy.go:62 ./cli/app/logs.go:34 ./cli/app/rollback.go:62 ./cli/app/secret.go:45 ./cli/app/secret.go:183 ./cli/app/secret.go:348 ./cli/app/upgrade.go:60 ./pkg/autocomplete/autocomplete.go:18 ./pkg/autocomplete/autocomplete.go:33 ./pkg/autocomplete/autocomplete.go:44 ./pkg/autocomplete/autocomplete.go:50 ./pkg/autocomplete/autocomplete.go:70 ./pkg/autocomplete/autocomplete.go:88 ./pkg/autocomplete/autocomplete.go:104 ./pkg/autocomplete/autocomplete.go:110 ./pkg/autocomplete/autocomplete.go:125
#, c-format
msgid "autocomplete failed: %s"
msgstr ""
@ -1720,7 +1732,7 @@ msgstr ""
msgid "broken symlink in your abra config folders: %s"
msgstr ""
#: ./cli/app/backup.go:140 ./cli/app/cp.go:31 ./cli/app/deploy.go:359 ./cli/app/rollback.go:340 ./cli/app/upgrade.go:451
#: ./cli/app/backup.go:140 ./cli/app/cp.go:31 ./cli/app/deploy.go:383 ./cli/app/rollback.go:363 ./cli/app/upgrade.go:472
msgid "c"
msgstr ""
@ -1742,6 +1754,11 @@ msgstr ""
msgid "can't copy dir to file"
msgstr ""
#: ./pkg/client/configs.go:47
#, c-format
msgid "can't parse version from config '%s'"
msgstr ""
#: ./cli/internal/validate.go:35
#, c-format
msgid "can't read local recipes: %s"
@ -1785,7 +1802,7 @@ msgstr ""
msgid "cannot use '[secret] [version]' and '--all' together"
msgstr ""
#: ./cli/app/deploy.go:270
#: ./cli/app/deploy.go:294
msgid "cannot use --chaos and --latest together"
msgstr ""
@ -1809,11 +1826,11 @@ msgstr ""
msgid "cannot use [service] and --all-services/-a together"
msgstr ""
#: ./cli/app/deploy.go:262 ./cli/app/new.go:71
#: ./cli/app/deploy.go:286 ./cli/app/new.go:71
msgid "cannot use [version] and --chaos together"
msgstr ""
#: ./cli/app/deploy.go:266
#: ./cli/app/deploy.go:290
msgid "cannot use [version] and --latest together"
msgstr ""
@ -1842,7 +1859,7 @@ msgstr ""
msgid "cfg"
msgstr ""
#: ./cli/app/backup.go:297 ./cli/app/backup.go:313 ./cli/app/check.go:89 ./cli/app/cmd.go:276 ./cli/app/cp.go:380 ./cli/app/deploy.go:334 ./cli/app/labels.go:137 ./cli/app/new.go:367 ./cli/app/ps.go:208 ./cli/app/restart.go:156 ./cli/app/restore.go:133 ./cli/app/secret.go:552 ./cli/app/secret.go:592 ./cli/app/secret.go:616 ./cli/app/secret.go:624 ./cli/catalogue/catalogue.go:308 ./cli/recipe/lint.go:130 ./cli/updater/updater.go:543
#: ./cli/app/backup.go:297 ./cli/app/backup.go:313 ./cli/app/check.go:89 ./cli/app/cmd.go:276 ./cli/app/cp.go:380 ./cli/app/deploy.go:358 ./cli/app/labels.go:137 ./cli/app/new.go:367 ./cli/app/ps.go:208 ./cli/app/restart.go:156 ./cli/app/restore.go:133 ./cli/app/secret.go:552 ./cli/app/secret.go:592 ./cli/app/secret.go:616 ./cli/app/secret.go:624 ./cli/catalogue/catalogue.go:308 ./cli/recipe/lint.go:130 ./cli/updater/updater.go:543
msgid "chaos"
msgstr ""
@ -1855,7 +1872,7 @@ msgstr ""
msgid "check for major updates"
msgstr ""
#: ./cli/app/deploy.go:90 ./cli/app/undeploy.go:53 ./cli/app/upgrade.go:415
#: ./cli/app/deploy.go:91 ./cli/app/undeploy.go:53 ./cli/app/upgrade.go:436
#, c-format
msgid "checking whether %s is already deployed"
msgstr ""
@ -1874,7 +1891,7 @@ msgstr ""
msgid "choosing %s as new version for %s"
msgstr ""
#: ./cli/app/rollback.go:147
#: ./cli/app/rollback.go:149
#, c-format
msgid "choosing %s as version to rollback"
msgstr ""
@ -1963,7 +1980,7 @@ msgstr ""
msgid "compose: %s, "
msgstr ""
#: ./pkg/client/configs.go:35
#: ./pkg/client/configs.go:36
#, c-format
msgid "conf %s: %s"
msgstr ""
@ -2002,7 +2019,7 @@ msgstr ""
msgid "considering %s config(s) for tag update"
msgstr ""
#: ./cli/app/undeploy.go:128 ./cli/server/prune.go:47
#: ./cli/app/undeploy.go:131 ./cli/server/prune.go:47
#, c-format
msgid "containers pruned: %d; space reclaimed: %s"
msgstr ""
@ -2118,7 +2135,7 @@ msgstr ""
msgid "critical errors present in %s config"
msgstr ""
#: ./cli/app/rollback.go:270
#: ./cli/app/rollback.go:293
#, c-format
msgid "current deployment '%s' is not a known version for %s"
msgstr ""
@ -2128,7 +2145,7 @@ msgstr ""
msgid "current: %s, new: %s, correct?"
msgstr ""
#: ./cli/app/backup.go:69 ./cli/app/deploy.go:30 ./cli/recipe/diff.go:15 ./cli/updater/updater.go:497
#: ./cli/app/backup.go:69 ./cli/app/deploy.go:31 ./cli/recipe/diff.go:15 ./cli/updater/updater.go:497
msgid "d"
msgstr ""
@ -2147,7 +2164,7 @@ msgid "deleted %s successfully from server"
msgstr ""
#. translators: `app deploy` command
#: ./cli/app/deploy.go:29
#: ./cli/app/deploy.go:30
msgid "deploy <domain> [version] [flags]"
msgstr ""
@ -2163,7 +2180,7 @@ msgstr ""
msgid "deploy labels stanza present"
msgstr ""
#: ./cli/app/deploy.go:369
#: ./cli/app/deploy.go:393
msgid "deploy latest recipe version"
msgstr ""
@ -2175,7 +2192,7 @@ msgstr ""
msgid "deploy timed out 🟠"
msgstr ""
#: ./cli/internal/deploy.go:109
#: ./cli/internal/deploy.go:130
msgid "deployment cancelled"
msgstr ""
@ -2240,11 +2257,11 @@ msgstr ""
msgid "dirty: %v, "
msgstr ""
#: ./cli/app/deploy.go:361 ./cli/app/rollback.go:342 ./cli/app/upgrade.go:453
#: ./cli/app/deploy.go:385 ./cli/app/rollback.go:365 ./cli/app/upgrade.go:474
msgid "disable converge logic checks"
msgstr ""
#: ./cli/app/deploy.go:353 ./cli/app/rollback.go:334 ./cli/app/upgrade.go:445
#: ./cli/app/deploy.go:377 ./cli/app/rollback.go:357 ./cli/app/upgrade.go:466
msgid "disable public DNS checks"
msgstr ""
@ -2383,7 +2400,7 @@ msgstr ""
msgid "ensure \"image: ...\" set on all services"
msgstr ""
#: ./cli/app/deploy.go:109
#: ./cli/app/deploy.go:110
#, c-format
msgid "ensure recipe: %s"
msgstr ""
@ -2464,7 +2481,7 @@ msgstr ""
msgid "expected 1 service but found %v: %s"
msgstr ""
#: ./cli/app/deploy.go:343 ./cli/app/remove.go:158 ./cli/app/rollback.go:324 ./cli/app/secret.go:577 ./cli/app/upgrade.go:435 ./cli/app/volume.go:204 ./cli/recipe/fetch.go:20 ./cli/recipe/fetch.go:133
#: ./cli/app/deploy.go:367 ./cli/app/remove.go:158 ./cli/app/rollback.go:347 ./cli/app/secret.go:577 ./cli/app/upgrade.go:456 ./cli/app/volume.go:204 ./cli/recipe/fetch.go:20 ./cli/recipe/fetch.go:133
msgid "f"
msgstr ""
@ -2660,7 +2677,7 @@ msgstr ""
msgid "for %s read env %s with value: %s from docker service"
msgstr ""
#: ./cli/app/deploy.go:342 ./cli/app/remove.go:157 ./cli/app/rollback.go:323 ./cli/app/upgrade.go:434 ./cli/app/volume.go:203 ./cli/recipe/fetch.go:132
#: ./cli/app/deploy.go:366 ./cli/app/remove.go:157 ./cli/app/rollback.go:346 ./cli/app/upgrade.go:455 ./cli/app/volume.go:203 ./cli/recipe/fetch.go:132
msgid "force"
msgstr ""
@ -2715,7 +2732,7 @@ msgstr ""
msgid "generated secrets %s shown again, please take note of them %s"
msgstr ""
#: ./cli/app/deploy.go:103
#: ./cli/app/deploy.go:104
#, c-format
msgid "get deploy version: %s"
msgstr ""
@ -2857,11 +2874,11 @@ msgstr ""
msgid "id: %s, "
msgstr ""
#: ./cli/app/backup.go:300 ./cli/app/backup.go:316 ./cli/app/check.go:92 ./cli/app/cmd.go:279 ./cli/app/cp.go:383 ./cli/app/deploy.go:337 ./cli/app/labels.go:140 ./cli/app/new.go:370 ./cli/app/ps.go:211 ./cli/app/restart.go:159 ./cli/app/restore.go:136 ./cli/app/secret.go:555 ./cli/app/secret.go:595 ./cli/app/secret.go:619 ./cli/app/secret.go:627 ./cli/catalogue/catalogue.go:311 ./cli/recipe/lint.go:133 ./cli/updater/updater.go:546
#: ./cli/app/backup.go:300 ./cli/app/backup.go:316 ./cli/app/check.go:92 ./cli/app/cmd.go:279 ./cli/app/cp.go:383 ./cli/app/deploy.go:361 ./cli/app/labels.go:140 ./cli/app/new.go:370 ./cli/app/ps.go:211 ./cli/app/restart.go:159 ./cli/app/restore.go:136 ./cli/app/secret.go:555 ./cli/app/secret.go:595 ./cli/app/secret.go:619 ./cli/app/secret.go:627 ./cli/catalogue/catalogue.go:311 ./cli/recipe/lint.go:133 ./cli/updater/updater.go:546
msgid "ignore uncommitted recipes changes"
msgstr ""
#: ./cli/app/undeploy.go:143 ./cli/server/prune.go:68
#: ./cli/app/undeploy.go:146 ./cli/server/prune.go:68
#, c-format
msgid "images pruned: %d; space reclaimed: %s"
msgstr ""
@ -3253,7 +3270,7 @@ msgstr ""
msgid "network %q is declared as external, but it is not in the right scope: %q instead of \"swarm\""
msgstr ""
#: ./cli/app/undeploy.go:135 ./cli/server/prune.go:54
#: ./cli/app/undeploy.go:138 ./cli/server/prune.go:54
#, c-format
msgid "networks pruned: %d"
msgstr ""
@ -3316,7 +3333,7 @@ msgstr ""
msgid "no app provided"
msgstr ""
#: ./cli/app/rollback.go:122
#: ./cli/app/rollback.go:124
msgid "no available downgrades"
msgstr ""
@ -3462,11 +3479,11 @@ msgstr ""
msgid "no volumes to remove"
msgstr ""
#: ./cli/app/deploy.go:358 ./cli/app/rollback.go:339 ./cli/app/upgrade.go:450
#: ./cli/app/deploy.go:382 ./cli/app/rollback.go:362 ./cli/app/upgrade.go:471
msgid "no-converge-checks"
msgstr ""
#: ./cli/app/deploy.go:350 ./cli/app/rollback.go:331 ./cli/app/upgrade.go:442
#: ./cli/app/deploy.go:374 ./cli/app/rollback.go:354 ./cli/app/upgrade.go:463
msgid "no-domain-checks"
msgstr ""
@ -3478,7 +3495,7 @@ msgstr ""
msgid "no-tty"
msgstr ""
#: ./cli/internal/deploy.go:159
#: ./cli/internal/deploy.go:180
#, c-format
msgid "not enough arguments: %s"
msgstr ""
@ -3531,7 +3548,7 @@ msgstr ""
msgid "only show errors"
msgstr ""
#: ./cli/app/upgrade.go:461
#: ./cli/app/upgrade.go:482
msgid "only show release notes"
msgstr ""
@ -3539,7 +3556,7 @@ msgstr ""
msgid "only tail stderr"
msgstr ""
#: ./cli/app/backup.go:274 ./cli/app/new.go:352 ./cli/app/ps.go:30 ./cli/app/secret.go:545 ./cli/app/secret.go:569 ./cli/app/secret.go:609 ./cli/app/undeploy.go:156 ./cli/catalogue/catalogue.go:285 ./cli/recipe/list.go:108 ./cli/recipe/release.go:668 ./cli/server/prune.go:17
#: ./cli/app/backup.go:274 ./cli/app/new.go:352 ./cli/app/ps.go:30 ./cli/app/secret.go:545 ./cli/app/secret.go:569 ./cli/app/secret.go:609 ./cli/app/undeploy.go:159 ./cli/catalogue/catalogue.go:285 ./cli/recipe/list.go:108 ./cli/recipe/release.go:668 ./cli/server/prune.go:17
msgid "p"
msgstr ""
@ -3558,22 +3575,22 @@ msgstr ""
msgid "parsed following command arguments: %s"
msgstr ""
#: ./cli/app/upgrade.go:318
#: ./cli/app/upgrade.go:339
#, c-format
msgid "parsing chosen upgrade version failed: %s"
msgstr ""
#: ./cli/app/upgrade.go:362
#: ./cli/app/upgrade.go:383
#, c-format
msgid "parsing deployed version failed: %s"
msgstr ""
#: ./cli/app/upgrade.go:323
#: ./cli/app/upgrade.go:344
#, c-format
msgid "parsing deployment version failed: %s"
msgstr ""
#: ./cli/app/upgrade.go:329 ./cli/app/upgrade.go:368
#: ./cli/app/upgrade.go:350 ./cli/app/upgrade.go:389
#, c-format
msgid "parsing recipe version failed: %s"
msgstr ""
@ -3598,7 +3615,7 @@ msgstr ""
msgid "pattern"
msgstr ""
#: ./cli/app/deploy.go:345 ./cli/app/remove.go:160 ./cli/app/rollback.go:326 ./cli/app/upgrade.go:437 ./cli/app/volume.go:206
#: ./cli/app/deploy.go:369 ./cli/app/remove.go:160 ./cli/app/rollback.go:349 ./cli/app/upgrade.go:458 ./cli/app/volume.go:206
msgid "perform action without further prompt"
msgstr ""
@ -3607,22 +3624,22 @@ msgstr ""
msgid "please fix your synced label for %s and re-run this command"
msgstr ""
#: ./cli/app/rollback.go:238
#: ./cli/app/rollback.go:261
#, c-format
msgid "please select a downgrade (version: %s):"
msgstr ""
#: ./cli/app/rollback.go:243
#: ./cli/app/rollback.go:266
#, c-format
msgid "please select a downgrade (version: %s, chaos: %s):"
msgstr ""
#: ./cli/app/upgrade.go:285
#: ./cli/app/upgrade.go:306
#, c-format
msgid "please select an upgrade (version: %s):"
msgstr ""
#: ./cli/app/upgrade.go:290
#: ./cli/app/upgrade.go:311
#, c-format
msgid "please select an upgrade (version: %s, chaos: %s):"
msgstr ""
@ -3652,7 +3669,7 @@ msgstr ""
msgid "processing %s for %s"
msgstr ""
#: ./cli/app/undeploy.go:155
#: ./cli/app/undeploy.go:158
msgid "prune"
msgstr ""
@ -3661,7 +3678,7 @@ msgstr ""
msgid "prune <server> [flags]"
msgstr ""
#: ./cli/app/undeploy.go:158
#: ./cli/app/undeploy.go:161
msgid "prune unused containers, networks, and dangling images"
msgstr ""
@ -3690,7 +3707,7 @@ msgstr ""
msgid "querying remote servers..."
msgstr ""
#: ./cli/app/backup.go:306 ./cli/app/list.go:299 ./cli/app/run.go:23 ./cli/app/upgrade.go:459 ./cli/catalogue/catalogue.go:293 ./cli/recipe/recipe.go:12 ./cli/recipe/release.go:636 ./cli/recipe/sync.go:265
#: ./cli/app/backup.go:306 ./cli/app/list.go:299 ./cli/app/run.go:23 ./cli/app/upgrade.go:480 ./cli/catalogue/catalogue.go:293 ./cli/recipe/recipe.go:12 ./cli/recipe/release.go:636 ./cli/recipe/sync.go:265
msgid "r"
msgstr ""
@ -3798,7 +3815,7 @@ msgstr ""
msgid "release <recipe> [version] [flags]"
msgstr ""
#: ./cli/app/upgrade.go:458
#: ./cli/app/upgrade.go:479
msgid "releasenotes"
msgstr ""
@ -4028,7 +4045,7 @@ msgstr ""
msgid "retrieving recipes"
msgstr ""
#: ./cli/app/rollback.go:27 ./cli/recipe/release.go:29
#: ./cli/app/rollback.go:29 ./cli/recipe/release.go:29
msgid "rl"
msgstr ""
@ -4037,7 +4054,7 @@ msgid "rm"
msgstr ""
#. translators: `app rollback` command
#: ./cli/app/rollback.go:26
#: ./cli/app/rollback.go:28
msgid "rollback <domain> [version] [flags]"
msgstr ""
@ -4066,7 +4083,7 @@ msgstr ""
msgid "run command locally"
msgstr ""
#: ./cli/app/deploy.go:229 ./cli/app/upgrade.go:266
#: ./cli/app/deploy.go:253 ./cli/app/upgrade.go:287
#, c-format
msgid "run the following post-deploy commands: %s"
msgstr ""
@ -4076,7 +4093,7 @@ msgstr ""
msgid "running backup %s on %s with exec config %v"
msgstr ""
#: ./cli/internal/deploy.go:189
#: ./cli/internal/deploy.go:210
#, c-format
msgid "running command %s %s within the context of %s_%s"
msgstr ""
@ -4096,7 +4113,7 @@ msgstr ""
msgid "running command: %s"
msgstr ""
#: ./cli/internal/deploy.go:167
#: ./cli/internal/deploy.go:188
#, c-format
msgid "running post-command '%s %s' in container %s"
msgstr ""
@ -4138,7 +4155,7 @@ msgstr ""
msgid "secret not found: %s"
msgstr ""
#: ./cli/app/deploy.go:284
#: ./cli/app/deploy.go:308
#, c-format
msgid "secret not generated: %s"
msgstr ""
@ -4316,11 +4333,11 @@ msgstr ""
msgid "skipping converge logic checks"
msgstr ""
#: ./cli/app/deploy.go:182
#: ./cli/app/deploy.go:183
msgid "skipping domain checks"
msgstr ""
#: ./cli/app/deploy.go:179
#: ./cli/app/deploy.go:180
msgid "skipping domain checks, no DOMAIN=... configured"
msgstr ""
@ -4817,7 +4834,7 @@ msgstr ""
msgid "undeploy <domain> [flags]"
msgstr ""
#: ./cli/app/undeploy.go:104
#: ./cli/app/undeploy.go:107
msgid "undeploy succeeded 🟢"
msgstr ""
@ -4845,7 +4862,7 @@ msgstr ""
msgid "unknown"
msgstr ""
#: ./cli/app/rollback.go:144
#: ./cli/app/rollback.go:146
msgid "unknown deployed version, unable to downgrade"
msgstr ""
@ -5012,32 +5029,32 @@ msgstr ""
msgid "version wiped from %s.env"
msgstr ""
#: ./cli/app/deploy.go:311
#: ./cli/app/deploy.go:335
#, c-format
msgid "version: can not redeploy chaos version %s"
msgstr ""
#: ./cli/app/deploy.go:298
#: ./cli/app/deploy.go:322
#, c-format
msgid "version: taking chaos version: %s"
msgstr ""
#: ./cli/app/deploy.go:319
#: ./cli/app/deploy.go:343
#, c-format
msgid "version: taking deployed version: %s"
msgstr ""
#: ./cli/app/deploy.go:324
#: ./cli/app/deploy.go:348
#, c-format
msgid "version: taking new recipe version: %s"
msgstr ""
#: ./cli/app/deploy.go:313
#: ./cli/app/deploy.go:337
#, c-format
msgid "version: taking version from .env file: %s"
msgstr ""
#: ./cli/app/deploy.go:304
#: ./cli/app/deploy.go:328
#, c-format
msgid "version: taking version from cli arg: %s"
msgstr ""
@ -5158,7 +5175,7 @@ msgstr ""
msgid "writer: %v, "
msgstr ""
#: ./cli/app/deploy.go:236 ./cli/app/new.go:212 ./cli/app/rollback.go:227 ./cli/app/undeploy.go:107 ./cli/app/upgrade.go:274
#: ./cli/app/deploy.go:260 ./cli/app/new.go:212 ./cli/app/rollback.go:250 ./cli/app/undeploy.go:110 ./cli/app/upgrade.go:295
#, c-format
msgid "writing recipe version failed: %s"
msgstr ""

View File

@ -280,7 +280,7 @@ type secretStatus struct {
type secretStatuses []secretStatus
// PollSecretsStatus checks status of secrets by comparing the local recipe
// config and deploymend server state.
// config and deployed server state.
func PollSecretsStatus(cl *dockerClient.Client, app appPkg.App) (secretStatuses, error) {
var secStats secretStatuses
@ -306,7 +306,7 @@ func PollSecretsStatus(cl *dockerClient.Client, app appPkg.App) (secretStatuses,
remoteSecretNames := make(map[string]bool)
for _, cont := range secretList {
remoteSecretNames[cont.Spec.Annotations.Name] = true
remoteSecretNames[cont.Spec.Name] = true
}
for secretName, val := range secretsConfig {