Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
CGoodwin90 committed Jul 10, 2024
1 parent e1b98da commit d1bde41
Show file tree
Hide file tree
Showing 183 changed files with 3,070 additions and 2,145 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@
site/

/builds/lagoon-cli-*
./temp_config.yaml
52 changes: 46 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ all-docker-darwin: deps-docker test-docker build-docker-darwin

gen: deps
GO111MODULE=on $(GOCMD) generate ./...
deps:
deps:
GO111MODULE=on ${GOCMD} get -v
test: gen
GO111MODULE=on $(GOCMD) fmt ./...
GO111MODULE=on $(GOCMD) vet ./...
GO111MODULE=on $(GOCMD) test -v ./...
GO111MODULE=on $(GOCMD) test -v -run '^Test(A[^P].*|[^A].*)' ./...

clean:
$(GOCMD) clean
Expand All @@ -40,7 +40,7 @@ build-darwin: test
GO111MODULE=on CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(GOCMD) build -ldflags '${LDFLAGS} -X "${PKG}/cmd.lagoonCLIBuildGoVersion=${GO_VER}"' -o builds/lagoon-cli-${VERSION}-darwin-amd64 -v

docs: test
LAGOON_GEN_DOCS=true GO111MODULE=on $(GOCMD) run main.go --docs
LAGOON_GEN_DOCS=true GO111MODULE=on $(GOCMD) run main.go --docs

tidy:
GO111MODULE=on $(GOCMD) mod tidy
Expand Down Expand Up @@ -96,20 +96,60 @@ install-linux:
install-darwin:
cp builds/lagoon-cli-${VERSION}-darwin-amd64 ${ARTIFACT_DESTINATION}/lagoon

release-patch:
release-patch:
$(eval VERSION=$(shell ${PWD}/increment_ver.sh -p $(shell git describe --abbrev=0 --tags)))
git tag $(VERSION)
mkdocs gh-deploy
git push $(GIT_ORIGIN) main --tags

release-minor:
release-minor:
$(eval VERSION=$(shell ${PWD}/increment_ver.sh -m $(shell git describe --abbrev=0 --tags)))
git tag $(VERSION)
mkdocs gh-deploy
git push $(GIT_ORIGIN) main --tags

release-major:
release-major:
$(eval VERSION=$(shell ${PWD}/increment_ver.sh -M $(shell git describe --abbrev=0 --tags)))
git tag $(VERSION)
mkdocs gh-deploy
git push $(GIT_ORIGIN) main --tags

api-tests: gen
GO111MODULE=on $(GOCMD) fmt ./...
GO111MODULE=on $(GOCMD) vet ./...
GO111MODULE=on $(GOCMD) test -v -run '^(TestAPI)' ./...

# upstream
CI_BUILD_TAG ?= lagoon-cli
CORE_REPO=https://github.com/uselagoon/lagoon.git
CORE_TREEISH=main

TEMP_CONFIG_FILE := temp_config.yaml

generate-config:
TOKEN=$(TOKEN) \
envsubst < local-dev/config.tpl > $(TEMP_CONFIG_FILE)

clean-config:
@rm -f $(TEMP_CONFIG_FILE)

# TODO - Update with UI-PR#266
.PHONY: test-with-api
test-with-api:
export LAGOON_CORE=$$(mktemp -d ./lagoon-core.XXX) \
&& git clone $(CORE_REPO) "$$LAGOON_CORE" \
&& cd "$$LAGOON_CORE" \
&& git checkout $(CORE_TREEISH) \
&& TOKEN=$$(docker run -e JWTSECRET=super-secret-string \
-e JWTAUDIENCE=api.dev \
-e JWTUSER=localadmin \
uselagoon/tests \
python3 /ansible/tasks/api/admin_token.py) \
&& IMAGE_REPO=uselagoon docker compose -p $(CI_BUILD_TAG) --compatibility up -d api api-db actions-handler local-api-data-watcher-pusher keycloak keycloak-db broker api-redis logs2notifications local-minio mailhog \
&& $(MAKE) CI_BUILD_TAG=$(CI_BUILD_TAG) wait-for-keycloak \
&& cd .. \
&& $(MAKE) generate-config TOKEN=$$TOKEN \
&& $(MAKE) api-tests \
&& $(MAKE) clean-config \
&& cd "$$LAGOON_CORE" \
&& $(MAKE) CI_BUILD_TAG=$(CI_BUILD_TAG) down
16 changes: 14 additions & 2 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,11 @@ var configLagoonsCmd = &cobra.Command{
tableHeader = append(tableHeader, "Kibana-URL")
}
tableHeader = append(tableHeader, "SSH-Key")
output.RenderOutput(output.Table{
r := output.RenderOutput(output.Table{
Header: tableHeader,
Data: data,
}, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
return nil
},
}
Expand Down Expand Up @@ -164,11 +165,19 @@ var configAddCmd = &cobra.Command{
if lagoonConfig.SSHKey != "" {
lc.SSHKey = lagoonConfig.SSHKey
}
// check identity files flag
identityFiles, err := cmd.Flags().GetStringSlice("publickey-identityfile")
if err != nil {
return err
}
if identityFiles != nil {
lc.PublicKeyIdentities = identityFiles
}
lagoonCLIConfig.Lagoons[lagoonConfig.Lagoon] = lc
if err := writeLagoonConfig(&lagoonCLIConfig, filepath.Join(configFilePath, configName+configExtension)); err != nil {
return fmt.Errorf("couldn't write config: %v", err)
}
output.RenderOutput(output.Table{
r := output.RenderOutput(output.Table{
Header: []string{
"Name",
"GraphQL",
Expand All @@ -190,6 +199,7 @@ var configAddCmd = &cobra.Command{
},
},
}, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
} else {
return fmt.Errorf("must have Hostname, Port, and GraphQL endpoint")
}
Expand Down Expand Up @@ -314,6 +324,8 @@ func init() {
"Lagoon Kibana URL (https://logs.amazeeio.cloud)")
configAddCmd.Flags().StringVarP(&lagoonSSHKey, "ssh-key", "", "",
"SSH Key to use for this cluster for generating tokens")
configAddCmd.Flags().StringSliceP("publickey-identityfile", "", []string{},
"Specific public key identity files to use when doing ssh-agent checks (support multiple)")
configLagoonsCmd.Flags().BoolVarP(&fullConfigList, "show-full", "", false,
"Show full config output when listing Lagoon configurations")
configFeatureSwitch.Flags().StringVarP(&updateCheck, "disable-update-check", "", "",
Expand Down
49 changes: 27 additions & 22 deletions cmd/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmd
import (
"context"
"fmt"
"github.com/uselagoon/lagoon-cli/pkg/output"
"strconv"

lclient "github.com/uselagoon/machinery/api/lagoon/client"
Expand Down Expand Up @@ -41,7 +42,7 @@ use 'lagoon deploy latest' instead`,
if err != nil {
return err
}
returnData, err := cmd.Flags().GetBool("returnData")
returnData, err := cmd.Flags().GetBool("returndata")
if err != nil {
return err
}
Expand Down Expand Up @@ -80,7 +81,8 @@ use 'lagoon deploy latest' instead`,
if err != nil {
return err
}
fmt.Println(result.DeployEnvironmentBranch)
resultData := output.Result{Result: result.DeployEnvironmentBranch}
output.RenderResult(resultData, outputOptions, cmd)
}
return nil
},
Expand All @@ -107,7 +109,7 @@ var deployPromoteCmd = &cobra.Command{
if err != nil {
return err
}
returnData, err := cmd.Flags().GetBool("returnData")
returnData, err := cmd.Flags().GetBool("returndata")
if err != nil {
return err
}
Expand Down Expand Up @@ -143,7 +145,8 @@ var deployPromoteCmd = &cobra.Command{
if err != nil {
return err
}
fmt.Println(result.DeployEnvironmentPromote)
resultData := output.Result{Result: result.DeployEnvironmentPromote}
output.RenderResult(resultData, outputOptions, cmd)
}
return nil
},
Expand All @@ -161,7 +164,7 @@ This environment should already exist in lagoon. It is analogous with the 'Deplo
},
RunE: func(cmd *cobra.Command, args []string) error {

returnData, err := cmd.Flags().GetBool("returnData")
returnData, err := cmd.Flags().GetBool("returndata")
if err != nil {
return err
}
Expand Down Expand Up @@ -204,7 +207,8 @@ This environment should already exist in lagoon. It is analogous with the 'Deplo
if err != nil {
return err
}
fmt.Println(result.DeployEnvironmentLatest)
resultData := output.Result{Result: result.DeployEnvironmentLatest}
output.RenderResult(resultData, outputOptions, cmd)
}
return nil
},
Expand Down Expand Up @@ -233,23 +237,23 @@ This pullrequest may not already exist as an environment in lagoon.`,
if err != nil {
return err
}
baseBranchName, err := cmd.Flags().GetString("baseBranchName")
baseBranchName, err := cmd.Flags().GetString("base-branch-name")
if err != nil {
return err
}
baseBranchRef, err := cmd.Flags().GetString("baseBranchRef")
baseBranchRef, err := cmd.Flags().GetString("base-branch-ref")
if err != nil {
return err
}
headBranchName, err := cmd.Flags().GetString("headBranchName")
headBranchName, err := cmd.Flags().GetString("head-branch-name")
if err != nil {
return err
}
headBranchRef, err := cmd.Flags().GetString("headBranchRef")
headBranchRef, err := cmd.Flags().GetString("head-branch-ref")
if err != nil {
return err
}
if err := requiredInputCheck("Project name", cmdProjectName, "Pullrequest title", prTitle, "Pullrequest number", strconv.Itoa(int(prNumber)), "baseBranchName", baseBranchName, "baseBranchRef", baseBranchRef, "headBranchName", headBranchName, "headBranchRef", headBranchRef); err != nil {
if err := requiredInputCheck("Project name", cmdProjectName, "Pullrequest title", prTitle, "Pullrequest number", strconv.Itoa(int(prNumber)), "Base branch name", baseBranchName, "Base branch ref", baseBranchRef, "Head branch name", headBranchName, "Head branch ref", headBranchRef); err != nil {
return err
}
buildVarStrings, err := cmd.Flags().GetStringArray("buildvar")
Expand All @@ -261,7 +265,7 @@ This pullrequest may not already exist as an environment in lagoon.`,
return err
}

returnData, err := cmd.Flags().GetBool("returnData")
returnData, err := cmd.Flags().GetBool("returndata")
if err != nil {
return err
}
Expand Down Expand Up @@ -291,7 +295,8 @@ This pullrequest may not already exist as an environment in lagoon.`,
if err != nil {
return err
}
fmt.Println(result.DeployEnvironmentPullrequest)
resultData := output.Result{Result: result.DeployEnvironmentPullrequest}
output.RenderResult(resultData, outputOptions, cmd)
}
return nil
},
Expand All @@ -304,25 +309,25 @@ func init() {
deployCmd.AddCommand(deployPullrequestCmd)

const returnDataUsageText = "Returns the build name instead of success text"
deployLatestCmd.Flags().Bool("returnData", false, returnDataUsageText)
deployLatestCmd.Flags().Bool("returndata", false, returnDataUsageText)
deployLatestCmd.Flags().StringArray("buildvar", []string{}, "Add one or more build variables to deployment (--buildvar KEY1=VALUE1 [--buildvar KEY2=VALUE2])")

deployBranchCmd.Flags().StringP("branch", "b", "", "Branch name to deploy")
deployBranchCmd.Flags().StringP("branchRef", "r", "", "Branch ref to deploy")
deployBranchCmd.Flags().Bool("returnData", false, returnDataUsageText)
deployBranchCmd.Flags().StringP("branch-ref", "r", "", "Branch ref to deploy")
deployBranchCmd.Flags().Bool("returndata", false, returnDataUsageText)
deployBranchCmd.Flags().StringArray("buildvar", []string{}, "Add one or more build variables to deployment (--buildvar KEY1=VALUE1 [--buildvar KEY2=VALUE2])")

deployPromoteCmd.Flags().StringP("destination", "d", "", "Destination environment name to create")
deployPromoteCmd.Flags().StringP("source", "s", "", "Source environment name to use as the base to deploy from")
deployPromoteCmd.Flags().Bool("returnData", false, returnDataUsageText)
deployPromoteCmd.Flags().Bool("returndata", false, returnDataUsageText)
deployPromoteCmd.Flags().StringArray("buildvar", []string{}, "Add one or more build variables to deployment (--buildvar KEY1=VALUE1 [--buildvar KEY2=VALUE2])")

deployPullrequestCmd.Flags().StringP("title", "t", "", "Pullrequest title")
deployPullrequestCmd.Flags().UintP("number", "n", 0, "Pullrequest number")
deployPullrequestCmd.Flags().StringP("baseBranchName", "N", "", "Pullrequest base branch name")
deployPullrequestCmd.Flags().StringP("baseBranchRef", "R", "", "Pullrequest base branch reference hash")
deployPullrequestCmd.Flags().StringP("headBranchName", "H", "", "Pullrequest head branch name")
deployPullrequestCmd.Flags().StringP("headBranchRef", "M", "", "Pullrequest head branch reference hash")
deployPullrequestCmd.Flags().Bool("returnData", false, returnDataUsageText)
deployPullrequestCmd.Flags().StringP("base-branch-name", "N", "", "Pullrequest base branch name")
deployPullrequestCmd.Flags().StringP("base-branch-ref", "R", "", "Pullrequest base branch reference hash")
deployPullrequestCmd.Flags().StringP("head-branch-name", "H", "", "Pullrequest head branch name")
deployPullrequestCmd.Flags().StringP("head-branch-ref", "M", "", "Pullrequest head branch reference hash")
deployPullrequestCmd.Flags().Bool("returndata", false, returnDataUsageText)
deployPullrequestCmd.Flags().StringArray("buildvar", []string{}, "Add one or more build variables to deployment (--buildvar KEY1=VALUE1 [--buildvar KEY2=VALUE2])")
}
21 changes: 13 additions & 8 deletions cmd/deploytarget.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ var addDeployTargetCmd = &cobra.Command{
Use: "deploytarget",
Aliases: []string{"dt"},
Short: "Add a DeployTarget to lagoon",
Long: "Add a DeployTarget (kubernetes or openshift) to lagoon, this requires admin level permissions",
Long: "Add a Deploytarget(Kubernetes) to lagoon, this requires admin level permissions",
PreRunE: func(_ *cobra.Command, _ []string) error {
return validateTokenE(cmdLagoon)
},
Expand Down Expand Up @@ -120,7 +120,7 @@ var addDeployTargetCmd = &cobra.Command{
returnNonEmptyString(fmt.Sprintf("%v", addDeployTargetResponse.Created)),
returnNonEmptyString(fmt.Sprintf("%v", addDeployTargetResponse.MonitoringConfig)),
})
output.RenderOutput(output.Table{
r := output.RenderOutput(output.Table{
Header: []string{
"ID",
"Name",
Expand All @@ -138,6 +138,7 @@ var addDeployTargetCmd = &cobra.Command{
},
Data: data,
}, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
}
return nil
},
Expand All @@ -147,7 +148,7 @@ var updateDeployTargetCmd = &cobra.Command{
Use: "deploytarget",
Aliases: []string{"dt"},
Short: "Update a DeployTarget in lagoon",
Long: "Update a DeployTarget (kubernetes or openshift) in lagoon, this requires admin level permissions",
Long: "Update a Deploytarget(Kubernetes) in lagoon, this requires admin level permissions",
PreRunE: func(_ *cobra.Command, _ []string) error {
return validateTokenE(cmdLagoon)
},
Expand Down Expand Up @@ -252,7 +253,7 @@ var updateDeployTargetCmd = &cobra.Command{
returnNonEmptyString(fmt.Sprintf("%v", updateDeployTargetResponse.Created)),
returnNonEmptyString(fmt.Sprintf("%v", updateDeployTargetResponse.MonitoringConfig)),
})
output.RenderOutput(output.Table{
r := output.RenderOutput(output.Table{
Header: []string{
"ID",
"Name",
Expand All @@ -270,6 +271,7 @@ var updateDeployTargetCmd = &cobra.Command{
},
Data: data,
}, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
}
return nil
},
Expand All @@ -279,7 +281,7 @@ var deleteDeployTargetCmd = &cobra.Command{
Use: "deploytarget",
Aliases: []string{"dt"},
Short: "Delete a DeployTarget from lagoon",
Long: "Delete a DeployTarget (kubernetes or openshift) from lagoon, this requires admin level permissions",
Long: "Delete a Deploytarget(Kubernetes) from lagoon, this requires admin level permissions",
PreRunE: func(_ *cobra.Command, _ []string) error {
return validateTokenE(cmdLagoon)
},
Expand Down Expand Up @@ -319,7 +321,8 @@ var deleteDeployTargetCmd = &cobra.Command{
resultData := output.Result{
Result: deleteDeployTargetResponse.DeleteDeployTarget,
}
output.RenderResult(resultData, outputOptions)
r := output.RenderResult(resultData, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
}
return nil
},
Expand Down Expand Up @@ -383,7 +386,8 @@ var addDeployTargetToOrganizationCmd = &cobra.Command{
"Organization Name": deployTargetResponse.Name,
},
}
output.RenderResult(resultData, outputOptions)
r := output.RenderResult(resultData, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
return nil
},
}
Expand Down Expand Up @@ -447,7 +451,8 @@ var removeDeployTargetFromOrganizationCmd = &cobra.Command{
"Organization Name": organizationName,
},
}
output.RenderResult(resultData, outputOptions)
r := output.RenderResult(resultData, outputOptions)
fmt.Fprintf(cmd.OutOrStdout(), "%s", r)
}
return nil
},
Expand Down
Loading

0 comments on commit d1bde41

Please sign in to comment.