Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/application_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,6 @@ func init() {
applicationDeployCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
applicationDeployCmd.Flags().StringVarP(&applicationName, "application", "n", "", "Application Name")
applicationDeployCmd.Flags().StringVarP(&applicationNames, "applications", "", "", "Application Names (comma separated) Example: --applications \"app1,app2,app3\"")
applicationDeployCmd.Flags().StringVarP(&applicationCommitID, "commit-id", "c", "", "Application Commit ID")
applicationDeployCmd.Flags().StringVarP(&applicationCommitID, "commit-id", "c", "", "Application Commit ID, or 'latest' for the newest commit of the branch")
applicationDeployCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch application status until it's ready or an error occurs")
}
19 changes: 16 additions & 3 deletions cmd/application_redeploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,22 @@ var applicationRedeployCmd = &cobra.Command{
envId := getEnvironmentIdFromContextPanicInCaseOfError(client)

applicationList := buildApplicationListFromApplicationNames(client, envId, applicationName, applicationNames)
application := applicationList[0]

_, _, err := client.ApplicationActionsAPI.DeployApplication(context.Background(), applicationList[0].Id).
DeployRequest(qovery.DeployRequest{GitCommitId: *applicationList[0].GitRepository.DeployedCommitId}).
var commitId string
switch {
case utils.IsLatestCommitKeyword(applicationCommitID):
latestCommitId, err := utils.ResolveLatestApplicationCommit(client, application.Id, application.Name)
checkError(err)
commitId = latestCommitId
case applicationCommitID != "":
commitId = applicationCommitID
default:
commitId = application.GitRepository.GetDeployedCommitId()
}

_, _, err := client.ApplicationActionsAPI.DeployApplication(context.Background(), application.Id).
DeployRequest(qovery.DeployRequest{GitCommitId: commitId}).
Execute()
checkError(err)
utils.Println(fmt.Sprintf("Request to redeploy application(s) %s has been queued..", pterm.FgBlue.Sprintf("%s%s", applicationName, applicationNames)))
Expand All @@ -36,7 +49,7 @@ func init() {
applicationRedeployCmd.Flags().StringVarP(&projectName, "project", "", "", "Project Name")
applicationRedeployCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
applicationRedeployCmd.Flags().StringVarP(&applicationName, "application", "n", "", "Application Name")
applicationRedeployCmd.Flags().StringVarP(&applicationCommitID, "commit-id", "c", "", "Application Commit ID")
applicationRedeployCmd.Flags().StringVarP(&applicationCommitID, "commit-id", "c", "", "Application Commit ID, or 'latest' for the newest commit of the branch")
applicationRedeployCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch application status until it's ready or an error occurs")

_ = applicationRedeployCmd.MarkFlagRequired("application")
Expand Down
2 changes: 1 addition & 1 deletion cmd/cronjob_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ func init() {
cronjobDeployCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
cronjobDeployCmd.Flags().StringVarP(&cronjobName, "cronjob", "n", "", "Cronjob Name")
cronjobDeployCmd.Flags().StringVarP(&cronjobNames, "cronjobs", "", "", "Cronjob Names (comma separated) (ex: --cronjobs \"cron1,cron2\")")
cronjobDeployCmd.Flags().StringVarP(&cronjobCommitId, "commit-id", "c", "", "Cronjob Commit ID")
cronjobDeployCmd.Flags().StringVarP(&cronjobCommitId, "commit-id", "c", "", "Cronjob Commit ID, or 'latest' for the newest commit of the branch")
cronjobDeployCmd.Flags().StringVarP(&cronjobTag, "tag", "t", "", "Cronjob Tag")
cronjobDeployCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch cronjob status until it's ready or an error occurs")
}
115 changes: 41 additions & 74 deletions cmd/environment_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,16 @@ func getDeploymentRequestForMultipleServices(
panic("unreachable") // staticcheck false positive: https://staticcheck.io/docs/checks#SA5011
}

if isLatestVersion(version) {
latestCommitId, err := utils.ResolveLatestApplicationCommit(client, app.Id, app.Name)
if err != nil {
utils.PrintlnError(err)
os.Exit(1)
panic("unreachable") // staticcheck false positive: https://staticcheck.io/docs/checks#SA5011
}
version = &latestCommitId
}

request.Applications = append(request.Applications, qovery.DeployAllRequestApplicationsInner{ApplicationId: app.Id, GitCommitId: version})
}
}
Expand Down Expand Up @@ -169,7 +179,7 @@ func getDeploymentRequestForMultipleServices(
// Adding lifecycle to be deployed
for _, nameAndVersion := range strings.Split(lifecycleNames, ",") {
name, version := splitServiceNameAndVersion(nameAndVersion)
job, gitCommitId, imageTag := getLifecycleJobGitCommitAndImageTag(jobs.GetResults(), name)
job := utils.FindByJobName(jobs.GetResults(), name)

if job == nil {
utils.PrintlnError(fmt.Errorf("lifecycle %s not found", name))
Expand All @@ -178,9 +188,9 @@ func getDeploymentRequestForMultipleServices(
}

req := qovery.DeployAllRequestJobsInner{Id: &job.LifecycleJobResponse.Id}
if gitCommitId != nil {
req.GitCommitId = version
} else if imageTag != nil {
if utils.GetJobDocker(job) != nil {
req.GitCommitId = resolveLatestJobVersion(client, job, version)
} else if utils.GetJobImage(job) != nil {
req.ImageTag = version
}

Expand All @@ -193,7 +203,7 @@ func getDeploymentRequestForMultipleServices(
for _, nameAndVersion := range strings.Split(cronjobNames, ",") {
name, version := splitServiceNameAndVersion(nameAndVersion)

job, gitCommitId, imageTag := getCronjobGitCommitAndImageTag(jobs.GetResults(), name)
job := utils.FindByJobName(jobs.GetResults(), name)

if job == nil {
utils.PrintlnError(fmt.Errorf("cronjob %s not found", name))
Expand All @@ -202,9 +212,9 @@ func getDeploymentRequestForMultipleServices(
}

req := qovery.DeployAllRequestJobsInner{Id: &job.CronJobResponse.Id}
if gitCommitId != nil {
req.GitCommitId = version
} else if imageTag != nil {
if utils.GetJobDocker(job) != nil {
req.GitCommitId = resolveLatestJobVersion(client, job, version)
} else if utils.GetJobImage(job) != nil {
req.ImageTag = version
}

Expand Down Expand Up @@ -234,12 +244,19 @@ func getDeploymentRequestForMultipleServices(
panic("unreachable") // staticcheck false positive: https://staticcheck.io/docs/checks#SA5011
}

gitCommitId, chartVersion := getHelmCommitAndChartVersion(client, name)

req := qovery.DeployAllRequestHelmsInner{Id: &helm.Id}
if gitCommitId != nil {
if utils.GetGitSource(helm) != nil {
if isLatestVersion(version) {
latestCommitId, err := utils.ResolveLatestHelmChartCommit(client, helm.Id, helm.Name)
if err != nil {
utils.PrintlnError(err)
os.Exit(1)
panic("unreachable") // staticcheck false positive: https://staticcheck.io/docs/checks#SA5011
}
version = &latestCommitId
}
req.GitCommitId = version
} else if chartVersion != nil {
} else if utils.GetHelmRepository(helm) != nil {
req.ChartVersion = version
}

Expand Down Expand Up @@ -313,73 +330,23 @@ func splitServiceNameAndVersion(service string) (string, *string) {
return split[0], &split[1]
}

func getLifecycleJobGitCommitAndImageTag(jobs []qovery.JobResponse, jobName string) (*qovery.JobResponse, *string, *string) {
var commitId, imageTag *string

job := utils.FindByJobName(jobs, jobName)

if job == nil {
return nil, nil, nil
}

if job.LifecycleJobResponse.Source.BaseJobResponseAllOfSourceOneOf != nil {
// image tag
image := job.LifecycleJobResponse.Source.BaseJobResponseAllOfSourceOneOf.GetImage()
tag := image.GetTag()
imageTag = &tag
} else if job.LifecycleJobResponse.Source.BaseJobResponseAllOfSourceOneOf1 != nil {
// commit id
docker := job.LifecycleJobResponse.Source.BaseJobResponseAllOfSourceOneOf1.GetDocker()
commitId = docker.GitRepository.DeployedCommitId
}

return job, commitId, imageTag
func isLatestVersion(version *string) bool {
return version != nil && utils.IsLatestCommitKeyword(*version)
}

func getCronjobGitCommitAndImageTag(jobs []qovery.JobResponse, jobName string) (*qovery.JobResponse, *string, *string) {
var commitId, imageTag *string

job := utils.FindByJobName(jobs, jobName)

if job == nil {
return nil, nil, nil
}

if job.CronJobResponse.Source.BaseJobResponseAllOfSourceOneOf != nil {
// image tag
image := job.CronJobResponse.Source.BaseJobResponseAllOfSourceOneOf.GetImage()
tag := image.GetTag()
imageTag = &tag
} else if job.CronJobResponse.Source.BaseJobResponseAllOfSourceOneOf1 != nil {
// commit id
docker := job.CronJobResponse.Source.BaseJobResponseAllOfSourceOneOf1.GetDocker()
commitId = docker.GitRepository.DeployedCommitId
func resolveLatestJobVersion(client *qovery.APIClient, job *qovery.JobResponse, version *string) *string {
if !isLatestVersion(version) {
return version
}

return job, commitId, imageTag
}

func getHelmCommitAndChartVersion(client *qovery.APIClient, helmId string) (*string, *string) {
var commitId, chartVersion *string

// check if the helm version is a chart version or a commit id
helm, _, err := client.HelmMainCallsAPI.GetHelm(context.Background(), helmId).Execute()
latestCommitId, err := utils.ResolveLatestJobCommit(client, utils.GetJobId(job), utils.GetJobName(job))
if err != nil {
utils.PrintlnError(err)
os.Exit(1)
panic("unreachable") // staticcheck false positive: https://staticcheck.io/docs/checks#SA5011
}

if helm.Source.HelmResponseAllOfSourceOneOf != nil {
// chart version
git := helm.Source.HelmResponseAllOfSourceOneOf.GetGit()
commitId = git.GitRepository.DeployedCommitId
} else if helm.Source.HelmResponseAllOfSourceOneOf1 != nil {
// commit id
git := helm.Source.HelmResponseAllOfSourceOneOf1.GetRepository()
chartVersion = &git.ChartVersion
}

return commitId, chartVersion
return &latestCommitId
}

func init() {
Expand All @@ -388,11 +355,11 @@ func init() {
environmentDeployCmd.Flags().StringVarP(&projectName, "project", "", "", "Project Name")
environmentDeployCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
environmentDeployCmd.Flags().StringVarP(&servicesJson, "services", "", "", "Services to deploy (JSON Format: https://api-doc.qovery.com/#tag/Environment-Actions/operation/deployAllServices)")
environmentDeployCmd.Flags().StringVarP(&applicationNames, "applications", "", "", "Applications to deploy E.g. --applications app1:commit_id,app2:commit_id). If you omit the commit id, the same commit will be used")
environmentDeployCmd.Flags().StringVarP(&applicationNames, "applications", "", "", "Applications to deploy E.g. --applications app1:commit_id,app2:latest). If you omit the commit id, the same commit will be used. 'latest' deploys the newest commit of the branch")
environmentDeployCmd.Flags().StringVarP(&containerNames, "containers", "", "", "Containers to deploy E.g. --containers container1:image_tag,container2:image_tag). If you omit the image tag, the same image tag will be used")
environmentDeployCmd.Flags().StringVarP(&lifecycleNames, "lifecycles", "", "", "Lifecycle to deploy E.g. --lifecycles job1:image_tag|git_commit_id,job2:image_tag|git_commit_id). If you omit the git commit id or image tag, the same version will be used")
environmentDeployCmd.Flags().StringVarP(&cronjobNames, "cronjobs", "", "", "Cronjobs to deploy E.g. --cronjobs cronjob1:git_commit_id,cronjob2:git_commit_id). If you omit the git commit id, the same version will be used")
environmentDeployCmd.Flags().StringVarP(&helmNames, "helms", "", "", "Helms to deploy E.g. --helms helm1:chart_version|git_commit_id,helm2:chart_version|git_commit_id). If you omit the chart version or git commit id, the same version will be used")
environmentDeployCmd.Flags().StringVarP(&lifecycleNames, "lifecycles", "", "", "Lifecycle to deploy E.g. --lifecycles job1:image_tag|git_commit_id,job2:image_tag|git_commit_id). If you omit the git commit id or image tag, the same version will be used. 'latest' deploys the newest commit of the branch for a git-sourced job")
environmentDeployCmd.Flags().StringVarP(&cronjobNames, "cronjobs", "", "", "Cronjobs to deploy E.g. --cronjobs cronjob1:git_commit_id,cronjob2:latest). If you omit the git commit id, the same version will be used. 'latest' deploys the newest commit of the branch for a git-sourced cronjob")
environmentDeployCmd.Flags().StringVarP(&helmNames, "helms", "", "", "Helms to deploy E.g. --helms helm1:chart_version|git_commit_id,helm2:chart_version|git_commit_id). If you omit the chart version or git commit id, the same version will be used. 'latest' deploys the newest commit of the branch for a git-sourced chart")
environmentDeployCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch environment status until it's ready or an error occurs")
environmentDeployCmd.Flags().BoolVarP(&skipPausedServicesFlag, "skip-paused-services", "", false, "Skip paused services: paused services won't be started / deployed")
}
2 changes: 1 addition & 1 deletion cmd/helm_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func init() {
helmDeployCmd.Flags().StringVarP(&helmName, "helm", "n", "", "helm Name")
helmDeployCmd.Flags().StringVarP(&helmNames, "helms", "", "", "helm Names (comma separated) (ex: --helms \"helm1,helm2\")")
helmDeployCmd.Flags().StringVarP(&chartVersion, "chart_version", "", "", "helm chart version")
helmDeployCmd.Flags().StringVarP(&chartGitCommitId, "chart_git_commit_id", "", "", "helm chart git commit id")
helmDeployCmd.Flags().StringVarP(&chartGitCommitId, "chart_git_commit_id", "", "", "helm chart git commit id, or 'latest' for the newest commit of the branch")
helmDeployCmd.Flags().StringVarP(&valuesOverrideCommitId, "values_override_git_commit_id", "", "", "helm values override git commit id")
helmDeployCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch helm status until it's ready or an error occurs")
}
2 changes: 1 addition & 1 deletion cmd/lifecycle_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func init() {
lifecycleDeployCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
lifecycleDeployCmd.Flags().StringVarP(&lifecycleName, "lifecycle", "n", "", "Lifecycle Job Name")
lifecycleDeployCmd.Flags().StringVarP(&lifecycleNames, "lifecycles", "", "", "Lifecycle Job Names")
lifecycleDeployCmd.Flags().StringVarP(&lifecycleCommitId, "commit-id", "c", "", "Lifecycle Commit ID")
lifecycleDeployCmd.Flags().StringVarP(&lifecycleCommitId, "commit-id", "c", "", "Lifecycle Commit ID, or 'latest' for the newest commit of the branch")
lifecycleDeployCmd.Flags().StringVarP(&lifecycleTag, "tag", "t", "", "Lifecycle Tag")
lifecycleDeployCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch lifecycle status until it's ready or an error occurs")
}
2 changes: 1 addition & 1 deletion cmd/terraform_force_unlock.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ func init() {
terraformForceUnlockCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
terraformForceUnlockCmd.Flags().StringVarP(&terraformName, "terraform", "n", "", "Terraform Name")
terraformForceUnlockCmd.Flags().StringVarP(&terraformNames, "terraforms", "", "", "Terraform Names (comma separated) Example: --terraforms \"tf1,tf2,tf3\"")
terraformForceUnlockCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID (optional, defaults to deployed commit)")
terraformForceUnlockCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID, or 'latest' for the newest commit of the branch (optional, defaults to deployed commit)")
terraformForceUnlockCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch terraform status until it's ready or an error occurs")
}
2 changes: 1 addition & 1 deletion cmd/terraform_migrate_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,6 @@ func init() {
terraformMigrateStateCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
terraformMigrateStateCmd.Flags().StringVarP(&terraformName, "terraform", "n", "", "Terraform Name")
terraformMigrateStateCmd.Flags().StringVarP(&terraformNames, "terraforms", "", "", "Terraform Names (comma separated) Example: --terraforms \"tf1,tf2,tf3\"")
terraformMigrateStateCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID (optional, defaults to deployed commit)")
terraformMigrateStateCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID, or 'latest' for the newest commit of the branch (optional, defaults to deployed commit)")
terraformMigrateStateCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch terraform status until it's ready or an error occurs")
}
2 changes: 1 addition & 1 deletion cmd/terraform_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ func init() {
terraformPlanCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
terraformPlanCmd.Flags().StringVarP(&terraformName, "terraform", "n", "", "Terraform Name")
terraformPlanCmd.Flags().StringVarP(&terraformNames, "terraforms", "", "", "Terraform Names (comma separated) Example: --terraforms \"tf1,tf2,tf3\"")
terraformPlanCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID (optional, defaults to deployed commit)")
terraformPlanCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID, or 'latest' for the newest commit of the branch (optional, defaults to deployed commit)")
terraformPlanCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch terraform status until it's ready or an error occurs")
}
2 changes: 1 addition & 1 deletion cmd/terraform_plan_and_apply.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,6 @@ func init() {
terraformPlanAndApplyCmd.Flags().StringVarP(&environmentName, "environment", "", "", "Environment Name")
terraformPlanAndApplyCmd.Flags().StringVarP(&terraformName, "terraform", "n", "", "Terraform Name")
terraformPlanAndApplyCmd.Flags().StringVarP(&terraformNames, "terraforms", "", "", "Terraform Names (comma separated) Example: --terraforms \"tf1,tf2,tf3\"")
terraformPlanAndApplyCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID (optional, defaults to deployed commit)")
terraformPlanAndApplyCmd.Flags().StringVarP(&terraformCommitId, "commit-id", "c", "", "Git Commit ID, or 'latest' for the newest commit of the branch (optional, defaults to deployed commit)")
terraformPlanAndApplyCmd.Flags().BoolVarP(&watchFlag, "watch", "w", false, "Watch terraform status until it's ready or an error occurs")
}
Loading
Loading